За последние 24 часа нас посетили 17743 программиста и 1672 робота. Сейчас ищут 900 программистов ...

Запрос на поиск и одновременная выборка с другой таблицы

Тема в разделе "PHP для новичков", создана пользователем Magnum, 4 фев 2017.

  1. Magnum

    Magnum Активный пользователь

    С нами с:
    19 июл 2015
    Сообщения:
    62
    Симпатии:
    0
    Привет мастера. Пишу запрос на поиск, и последующую выборку названия категории из другой таблицы. Пользуюсь left join-ом
    Но в итоге получаю пустое поле, почему так (так не должно быть, там таблица заполнена)?

    Сам запрос:
    PHP:
    1. SELECT courses.id, courses.title, courses.type, courses.link, courses.image, courses_type.name
    2. FROM courses
    3. LEFT JOIN courses_type ON courses.type=courses_type.id
    4. WHERE courses.subject LIKE "%ритуал%" AND NOT courses.id = 1
    Буду очень благодарен за помощь;)
     
    #1 Magnum, 4 фев 2017
    Последнее редактирование модератором: 4 фев 2017
  2. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Объединять можно только таблицы, в которых одинаковое количество полей. Тут нужно делать 2 запроса.
     
  3. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Это ты про юнион?
     
  4. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    С джоином же, вроде, тоже так? Или не?
     
  5. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    @SamyRed ну ты чисто логически подумай. Юзер - айди, логин, пароль (3). Посты - айди, айди автора, дата, заголовок, содержание (5). Джойнится же. А вот юнионить нужно одинаковое кол-во полей с одинаковыми именами и в заданном порядке.

    Как джойн работает? На примере авторов постов: ты к кортежу поста (5 полей) справа (для лефт джойна) прибавляешь еще один кортеж - юзера (3 поля). В результирующей таблице новый кортеж будет шириной 8 полей. А дальше через перечисление полей в селекте ты откинешь из результирующей таблицы ненужные поля. Например, тебе для вывода постов с авторами совсем не нужен пароль автора (совсем не нужен) и айди пользователя - он содержится в айди автора поста. В остатке 6 полей.
     
  6. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Ну ок, понял тогда