3
У меня есть этот запрос:MySQL LEFT JOIN с IF
SELECT r.*, d.rateName
FROM ratings r
LEFT JOIN rate_data d ON (r.rateID=d.rateID AND d.rateName != '')
ORDER BY r.rateTime DESC
Эта работа отлично. Теперь у меня есть вторая таблица данных. Дайте изменение, чтобы сделать это с IF в одном запросе или это единственный способ сделать два запроса и слить результат?
Я пытаюсь показать вам, что я имею в виду:
SELECT r.*, d.rateName
FROM ratings r
(IF r.isOther == 0)LEFT JOIN rate_data d ON (r.rateID=d.rateID AND d.rateName != '')
(ELSEIF r.isOther == 1)LEFT JOIN rate_data_other d ON (r.rateOtherID=d.rateOtherID AND d.rateName != '')
ORDER BY r.rateTime DESC
Спасибо за помощь
Просто используйте союз:
SELECT * FROM ( \t (SELECT r.*, d.rateName \t FROM ratings r LEFT JOIN rate_data d ON (r.rateID=d.rateID AND d.rateName != '') WHERE r.isOther = 0) UNION ( SELECT r.*, d.rateName \t FROM ratings r \t LEFT JOIN rate_data_other d ON (r.rateOtherID=d.rateOtherID AND d.rateName != '') \t \t WHERE r.isOther = 1) \t \t) TMP ORDER BY TMP.rateTime DESC
–