Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

mysql словарь

271
24 января 2008 года
MrXaK
721 / / 31.12.2002
можно ли в mysql несколькими запросами создать таблицу, в которой будут все слова из поля другой таблицы и ссылка туда, где это слово есть? или формирование такой таблицы возможно только с помощью языка (php например)?
8
25 января 2008 года
mfender
3.5K / / 15.06.2005
возможность есть.
поэтому переносим в БД тему.
8.2K
25 января 2008 года
Ora-cool
211 / / 20.09.2007
Цитата: Mr.Hacker
можно ли в mysql несколькими запросами создать таблицу, в которой будут все слова из поля другой таблицы и ссылка туда, где это слово есть? или формирование такой таблицы возможно только с помощью языка (php например)?


Создаете таблицу с 3-мя полями. В 1-м поле primary key, во 2-м поле foreign key - ссылка на записи "другой" таблицы. 3-е поле хранит слово. Далее открываете документацию по MySQL и ищете операции со строками. И вперед.

271
27 января 2008 года
MrXaK
721 / / 31.12.2002
почитал официальный ман.. есть вопросы...
допустим мне надо только слова, разделённые пробелами.. ничего похожего на explode() нету, соответственно делаем что-то типа SELECT SUBSTRING(field, 0, LOCATE(' ', field)).. так получаем только первое слово.. а как в одном запросе получить все слова из строки?
271
29 января 2008 года
MrXaK
721 / / 31.12.2002
в-общем я хз как это средствами mysql решить, набросал скриптик на php
Код:
<?
ob_start();
$settings = parse_ini_file(dirname( __FILE__).'/makeDict.ini', true);
$fromHandle = new mysqli($settings['fromDataBase']['dbHost'],
                        $settings['fromDataBase']['dbUser'],
                        $settings['fromDataBase']['dbPass'],
                        $settings['fromDataBase']['dbName'],
                        $settings['fromDataBase']['dbPort']
);
$toHandle = new mysqli( $settings['toDataBase']['dbHost'],
                        $settings['toDataBase']['dbUser'],
                        $settings['toDataBase']['dbPass'],
                        $settings['toDataBase']['dbName'],
                        $settings['toDataBase']['dbPort']
);
$toHandle->autocommit(FALSE);
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

if ($res = $fromHandle->real_query('SELECT COUNT(*) as count FROM '.$settings['fromDataBase']['dbTable'])) {
    $row = $res->fetch_assoc();
    $count = $row['count'];
}
else exit();

$insText = 'INSERT INTO '.$settings['toDataBase']['dbTable'].' ('.$settings['toDataBase']['dbPrimaryId'].','.$settings['toDataBase']['dbForeignId'].','.$settings['toDataBase']['dbValField'].') VALUES ';
for ($i = 0; $i < $count; $i += $settings['custom']['perIt']) {
    if ($res = $fromHandle->real_query('SELECT '.$settings['fromDataBase']['dbIdField'].' as id,'.$settings['fromDataBase']['dbValField'].' as val FROM '.$settings['fromDataBase']['dbTable'].' LIMIT '.$i.', '.$settings['custom']['perIt'])) {
        $txt = $insText;
        while ($row = $res->fetch_assoc()) {
            $words = explode(' ', $row['val']);
            foreach ($words as $word)
            $txt .= '(NULL, '.$row['id'].', \''.$word.'\'),';
        }
    }
    else exit();
    $txt = substr($txt, 0, strlen($txt)-1);
    $txt .= ';';
    $toHandle->real_query('LOCK TABLES '.$settings['toDataBase']['dbTable'].' WRITE');
    $f = $toHandle->query($txt);
    $toHandle->commit();
    if (!$f)
        $toHandle->rollback();
    $toHandle->real_query('UNLOCK TABLES');
    echo 'Completed '.$i.'\n';
    flush();
}
?>

собсна makeDict.ini чё-то типа такого:
Код:
; файл настроек для создания словаря
[fromDataBase]
dbHost = 127.0.0.1
dbPort = 3306
dbUser = root
dbPass = 123
dbName = db1
dbTable = test_table1
dbIdField = id
dbValField = str

[toDataBase]
dbHost = 127.0.0.1
dbPort = 3306
dbUser = root
dbPass = 123
dbName = db1
dbTable = test_table2
dbPrimaryId = id
dbForeignId = parent
dbValField = str

[custom]
perIt = 200


кто поможет оптимизировать?
и может тему обратно перенести в web-программирование?
8.2K
01 февраля 2008 года
Ora-cool
211 / / 20.09.2007
Цитата: Mr.Hacker
кто поможет оптимизировать?
и может тему обратно перенести в web-программирование?


Можно и перенести.Только почему нельзя оформить это в виде хранимой процедуры на сервере?

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог