JOIN для строковых полей не возвращает совпадений

0

У меня есть запрос с двумя внутренними соединениями. Все работает нормально, и я получаю нужные данные из базы данных, пока не попытаюсь добавить left join где я сравниваю две строки. Итак, все выглядит так:

$q = 'SELECT * FROM table_1
      INNER JOIN on table_2 WHERE table_1.id=table_2.id
      INNER JOIN on table_3 WHERE table_1.integer_value=table_3.int_value
      LEFT JOIN table_4 ON table_3 WHERE table_3.string_value=table_4.string_value';

Это ничего не возвращает. Если я удалю LEFT JOIN, все будет хорошо.

Я видел два строковых значения, которые я пытаюсь объединить в базе данных, и они одинаковы в table_4 и table_3. Однако я не получаю никаких данных.

Должен ли я обрезать строки или манипулировать ими каким-то образом до того, как результат приведет к совпадению?

  • 0
    Условие WHERE преобразует ваше "левое соединение" во внутреннее соединение.
  • 0
    Вы пытались использовать LEFT JOIN table_4 ON table_3... вместо использования WHERE
Показать ещё 4 комментария
Теги:

1 ответ

1
Лучший ответ

Ваш синтаксис для ваших соединений неверен. В запросе может быть только одно предложение WHERE. Вы хотите использовать предложение ON, чтобы указать условия JOIN.

$q = 'SELECT * FROM table_1
      INNER JOIN on ON table_1.id=table_2.id
      INNER JOIN on ON table_1.integer_value=table_3.int_value
      LEFT JOIN table_4 ON table_3.string_value=table_4.string_value';

Ещё вопросы

Сообщество Overcoder
Наверх
Меню