2012-06-12 222 views
1

我有兩個表用戶和work_orders。 現在我需要通過從用戶表字段進行過濾來獲得work_orders結果。使用左連接和在另一個連接表的字段

我下面的查詢沒有返回結果。

SELECT `work_orders`.`id` as id, `work_orders`.`type` as type 
    , `work_orders`.`title` as title, `work_orders`.`status` as status 
    , `work_orders`.`publish_date` as publish_date 
    , `work_orders`.`priority` as priority, `work_orders`.`assigned_to` as assigned_to 
    , `work_orders`.`client_id` as client_id, `work_orders`.`due_date` as due_date 
    FROM (`work_orders`) 
    LEFT JOIN `users` 
    ON `users`.`id` = `work_orders`.`assigned_to` 
WHERE `work_orders`.`status` != 'closed' 
    AND users.manager_id = '143' 
ORDER BY `work_orders`.`id` DESC 
LIMIT 30 
+1

寫你的問題時,使其可讀請花一些時間。您也可能想要調查表的別名;例如,'選擇work_orders中的wo.id作爲wo'。沒有必要在每個列/表上使用反標記;只在你使用保留名稱的地方。 – Ben

+0

刪除where子句,看看你得到了什麼樣的命中。 –

+0

將從下次檢查該Ben – Yalamber

回答

0

您的WHERE子句是否篩選出所有結果?另外,如果要顯示僅適用於特定用戶的work_orders,請將您的LEFT JOIN更改爲INNER JOIN,或使用EXISTS。

嘗試......

SELECT field1, field2, ... 
FROM work_orders 
WHERE EXISTS (
    SELECT 1 
    FROM users 
    WHERE users.id = work_orders.assigned_to 
     AND manager_id='143' 
) 
+0

你好, work_orders對某些用戶是pretian,但是再次鏈接到用戶的manager_id的用戶也是。現在我需要通過manager_id過濾work_orders,這是用戶表中的字段 – Yalamber

+0

因此,您試圖獲取某個經理下的所有工作訂單。正確? –

+0

是的,這就是我想要做的。 – Yalamber