2014-02-07 79 views
0

我昨天來到這裏,你們都搖動它。我現在正在制定一個超出我的查詢範圍,並且沒有找到Google上的答案。我試圖從主查詢中的查詢中獲取結果並顯示這些結果。這裏的代碼:在結果中包含內部連接子查詢?

SELECT u.id, u.level, u.first_name, u.last_name, u.email 
FROM users u 
INNER JOIN user_companies uc ON u.id = uc.user_id 
LEFT JOIN (SELECT s.user_id, s.start, s.stop, s.break, s.task 
FROM schedule s 
WHERE s.start>? AND s.stop<? AND s.multi_id=?) 
as s ON (u.id = s.user_id) 
WHERE uc.comp_id=? AND uc.status=1 AND 
NOT EXISTS (SELECT 1 FROM schedule_remove sc 
WHERE sc.user_id=u.id AND sc.sched_id=?) 

瘋狂的查詢,簡單的問題。如何將s.start, s.stop, s...放入我的結果查詢中?現在我所能拉的是u.level,u.first_name等。

謝謝!

更新

我是個白癡。感謝websch01lar推動實現這一目標。將s.stop等添加到主列表中就像它應該那樣工作。在試圖顯示結果之前,我只是沒有檢查$ r ['stop']是否爲空。

+0

只是它們包括在列表... U,電子郵件,s.stop .. – websch01ar

+0

我試過了,結果返回NULL。出於某種原因,它不包括第二個查詢結果。 – smplejohn

+0

它是一個左連接,所以一些記錄將爲空。 – websch01ar

回答

0

只需在您的主/外部查詢那些s.*列和做與表內連接太像下面

SELECT u.id, u.level, u.first_name, u.last_name, u.email, 
s.user_id, s.start, s.stop, s.break, s.task <-- Here 
FROM users u 
INNER JOIN user_companies uc ON u.id = uc.user_id 
INNER JOIN schedule s ON u.id = s.user_id 
AND (s.start>? AND s.stop<? AND s.multi_id=?) 
WHERE 
uc.comp_id=? AND uc.status=1 AND 
NOT EXISTS (SELECT 1 FROM schedule_remove sc 
WHERE sc.user_id=u.id AND sc.sched_id=?)