Сравнение двух таблиц и вывод данных из другой колонки - 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)

Объяснение кода листинга программы

  1. В данном коде происходит сравнение двух таблиц с именами tab1 и tab2.
  2. В результате сравнения выбираются данные из трех колонок: news_id, title и keyword.
  3. Для выполнения сравнения используется оператор JOIN, а именно его вариант - LEFT JOIN.
  4. В качестве условия для объединения строк из таблицы tab2 используется выражение tab2.query = CONCAT('news_id=',tab1.news_id).
  5. Функция CONCAT объединяет значения переменных news_id из таблицы tab1 и строку news_id= в одну строку.
  6. Результатом будет строка, которая будет использоваться как условие для объединения строк из таблицы tab2.
  7. При этом, если значение переменной news_id из таблицы tab1 отсутствует в таблице tab2, то соответствующие поля из таблицы tab2 не будут включены в результат.
  8. Это обусловлено использованием оператора LEFT JOIN, который обеспечивает включение всех строк из левой таблицы (в данном случае tab1), даже если соответствующие значения отсутствуют в правой таблице (в данном случае tab2).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5
Похожие ответы