После поиска в Google и просмотра SO я вышел с нерабочим решением для определенного типа запроса. У меня есть таблица, которая используется для преобразования значения из другой таблицы в текст. Скажем:выполнить JOIN, если объединенное поле имеет значение
id - text
1 - House
2 - Villa
3 - Camper
и главная таблица
id - valueA - valueB - valueC
1 - 1 - whastington - 3000
2 - - NewYork - 5000
Так что, если я извлечь строку FRM основной таблицы I заменить значение от 1 значения а в дом и так далее.
ValueA устанавливается на определенных условиях. В любом другом случае он будет оставлен пустым (поле не должно быть NULL).
Если я сделаю присоединение, вторая строка будет опущена, так как valueA пуст. Запрос
SELECT id,text,valueB,valueC FROM main JOIN dic on main.valueA = dic.id
так что я пытался сказать: выполнить объединение только если значение а не пустой , и я написал это условие:
SELECT id,text,valueB,valueC FROM main
JOIN dic ON (main.valueA = dic.id AND main.valueA <>'')
как я прочитал в this question но Я не получил то, что хочу, вероятно, потому что условие И в этом случае было основано на другом поле, а не на объединенном. Я могу добавить еще одну строку в таблице словаря с помощью пары 0 - NONE и превратить все пустое значение A в 0, но я хотел бы узнать, правильно ли я нахожусь на правильном пути с моим запросом и что я делаю неправильно. Это так называемое «условное соединение» возможно в mysql? я также имел взглянуть на this question, но это решение было бы сделать этот запрос слишком сложным для его цели, и в этом случае я бы пойти на «план Б» заменить пустой с 0
Что вы ожидаемый результат от примерных данных? – Simimmo
Я хочу выбрать обе строки из main. С равным соединением я пропускаю строку 2 –