У меня есть запрос с двумя внутренними соединениями. Все работает нормально, и я получаю нужные данные из базы данных, пока не попытаюсь добавить 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
. Однако я не получаю никаких данных.
Должен ли я обрезать строки или манипулировать ими каким-то образом до того, как результат приведет к совпадению?
Ваш синтаксис для ваших соединений неверен. В запросе может быть только одно предложение 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';
LEFT JOIN table_4 ON table_3...
вместо использованияWHERE