Сравнение двух таблиц и вывод данных из другой колонки - MySQL
Формулировка задачи:
Добрый день. Возникла такая проблема:
Есть база в ней допустим 2 таблицы(tab1 и tab2).
В таблице tab1 есть такой параметр как "news_id". В ней хранятся, не сложно догадаться, цифры-айдишники присвоенные элементам.
Проблема в том, что не знаю как сравнить, так как в таблице tab2 есть параметр как "query" и в нем данные, по примеру "news_id=10".
Нужно сравнить как то эти два элемента, и если цифры похожи, то из таблицы tab2 вывести другой параметр "keyword", который совпадает с айдишниками этими.
могу вытащить как бы только с одной таблицы.
$result = mysql_query("SELECT news_id, title, short_description FROM `fm_news_description` ORDER BY `fm_news_description`.`news_id` ASC LIMIT 0 , 30");//Запрос
while ($row=MYSQL_FETCH_ARRAY($result)){
$news_id=$row['news_id'];
$title=$row['title'];
$short_description=$row['short_description'];
echo '<item>
<title>'.$title.'</title></br>
<link></link></br>
<description>'.$short_description.'</description></br>
</item></br></br>';
}
Вот для большего понимания скрины 2 таблиц:
http://joxi.ru/12MWBVzh4N1Kzr
http://joxi.ru/vAWX4VzIkNlKpr
Решение задачи: «Сравнение двух таблиц и вывод данных из другой колонки»
textual
Листинг программы
SELECT tab1.news_id, tab1.title, tab2.keyword
FROM tab1
LEFT JOIN tab2 ON tab2.query = CONCAT('news_id=',tab1.news_id)
Объяснение кода листинга программы
- В данном коде происходит сравнение двух таблиц с именами
tab1иtab2. - В результате сравнения выбираются данные из трех колонок:
news_id,titleиkeyword. - Для выполнения сравнения используется оператор JOIN, а именно его вариант - LEFT JOIN.
- В качестве условия для объединения строк из таблицы
tab2используется выражениеtab2.query = CONCAT('news_id=',tab1.news_id). - Функция CONCAT объединяет значения переменных
news_idиз таблицыtab1и строкуnews_id=в одну строку. - Результатом будет строка, которая будет использоваться как условие для объединения строк из таблицы
tab2. - При этом, если значение переменной
news_idиз таблицыtab1отсутствует в таблицеtab2, то соответствующие поля из таблицыtab2не будут включены в результат. - Это обусловлено использованием оператора LEFT JOIN, который обеспечивает включение всех строк из левой таблицы (в данном случае
tab1), даже если соответствующие значения отсутствуют в правой таблице (в данном случаеtab2).