Сравнение двух таблиц и вывод данных из другой колонки - 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
).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д