Выборка связанных данных из двух таблиц - MySQL
Формулировка задачи:
На текущий момент запрос такого вида
в таблице parser есть столбец с названиями товара в таблице post_2 столбец post2 это название товара поставщика а столбец price2 это столбец с ценой на его товар ... не могу составить правильный запрос для поиска товара из значений первой таблицы и извлечения соответствующей цены ... Помогите пожалуйста
SELECT id, product1, (
SELECT price2
FROM post_2
WHERE UPPER(post_2.post2)
LIKE concat('%',UPPER(product1),'%')
AND price2 > 0)
FROM parser
WHERE product1
IS NOT NULL ORDER BY IDРешение задачи: «Выборка связанных данных из двух таблиц»
textual
Листинг программы
error_reporting(E_ALL);
ini_set('allow_url_fopen','1');//разрешаем открывать адреса
ini_set('output_buffering','1');//output_buffering = On
set_time_limit(0);//убираем лимит времени
$dbase=mysql_connect('localhost', 'parser', 'parser');
mysql_select_db('parser');
@mysql_query('set character_set_client="utf8"');
@mysql_query('set character_set_results="utf8"');
@mysql_query('set collation_connection="utf8_general_ci"');
$query = "SELECT id, product1 FROM parser WHERE product1 IS NOT NULL ORDER BY ID";//запрос
$result = mysql_query($query);//выполнение запроса
$rows = array();
while($row = mysql_fetch_array($result))//ассоциативный массив
{
$rows[] = $row;
}
foreach($rows as $row)//перебор массива
{
$Id = $row['id'];//индекс
$Product1 = $row['product1'];//название продукта
$Post_2 = @mysql_query("SELECT price2 FROM post_2 WHERE MATCH (post2) AGAINST ('%" . $Product1 . "%') AND price2 > 0 LIMIT 1");
$q = mysql_fetch_assoc ($Post_2);
$Price = $q['price2'];
$Update = "UPDATE parser SET post2_price = " . $Price . " WHERE id =" . $Id;
mysql_query($Update);
echo "$Id - $Price<br>";
}
Объяснение кода листинга программы
- Подключаем необходимые настройки для работы с MySQL и PHP
- Устанавливаем соединение с базой данных
- Выполняем запрос к базе данных, чтобы получить данные из таблицы 'parser'
- Полученные данные сохраняем в массив
- Для каждой строки в массиве выполняем запрос к таблице 'post_2' чтобы получить данные о цене продукта
- Сохраняем полученные данные в переменную $Price
- Формируем SQL запрос для обновления данных в таблице 'parser'
- Выполняем запрос на обновление данных в таблице 'parser'
- Выводим на экран ID продукта и его цену