2015-09-14 7 views
0

У меня проблема. Я хочу использовать подзапрос tm в LEFT JOIN .. ONMySQL: подзапрос в LEFT JOIN

SELECT t.*, 
    (SELECT `uid` FROM `truck_transport` tm WHERE tm.from = t.station ORDER BY RAND() LIMIT 1) as tm 
FROM `truck_trailer` t 
LEFT JOIN `truck_transport` tm2 ON (tm2.uid = tm) ... 

Если я использую подзапрос в FROM результате ранда всегда одинакова.

Извините за мой язык:/

ответ

0

попробовать это

SELECT t.*, tm.uid 
FROM `truck_trailer` t 
    LEFT JOIN (SELECT `uid` FROM `truck_transport` ORDER BY RAND() LIMIT 1) as tm 
    ON (tm.uid = t.station) 
+0

Всегда возвращайте то же значение:/ –

+0

Можете ли вы создать SQLFiddle здесь (http://sqlfiddle.com/) как с вашими таблицами, так и с некоторыми примерными данными и ожидаемыми результатами. Сколько записей у вас в таблице «truck_transport»? Есть несколько записей в таблице «truck_trailer», соответствующих нескольким записям в 'truck_transport'. Возврат того же результата также зависит от данных в таблице «truck_trailer» – mynawaz

0

mynawaz написал правильный запрос.

Ваш подзапрос всегда будет возвращать только один результат из-за limit 1. Если вы хотите получить только один результат, используйте JOIN вместо LEFT JOIN. потому что левая таблица соединения всегда возвращает совпадающие строки и не совпадает с NULL правого бокового стола.