2013-01-31 32 views
1

我已閱讀所有相關的問題,但無法得到這個簡單的事情工作。我想這個串聯查詢的結果:如何連接此結果集?

SELECT DISTINCT ord.uid AS u 
    FROM `uc_order_products` ord_prod, `uc_orders` ord, `uc_roles_expirations` re 
WHERE ord.order_id = ord_prod.order_id 
    AND ord_prod.title LIKE '2012. évi%' 
    AND ord.uid NOT 
IN (SELECT uid FROM uc_roles_expirations re) 

它看起來像這樣:

U 
---- 
1234 
1235 
... 

這是我的嘗試:

SELECT GROUP_CONCAT(DISTINCT ord.uid AS u 
    FROM `uc_order_products` ord_prod, `uc_orders` ord, `uc_roles_expirations` re 
WHERE ord.order_id = ord_prod.order_id 
    AND ord_prod.title LIKE '2012. évi%' 
    AND ord.uid NOT 
IN (SELECT uid FROM uc_roles_expirations re) SEPARATOR ',') 

..和沒有工作。你可以幫幫我嗎?

回答

2

只有columnName應該在GROUP_CONCAT函數中。

SELECT GROUP_CONCAT(DISTINCT ord.uid SEPARATOR ',')AS u 
FROM `uc_order_products` ord_prod, 
     `uc_orders` ord, 
     `uc_roles_expirations` re 
WHERE ord.order_id = ord_prod.order_id 
    AND ord_prod.title LIKE '2012. évi%' 
    AND ord.uid NOT 
IN (SELECT uid FROM uc_roles_expirations re) 

PS:至於側面說明,這uqery會產生一個笛卡爾結果由於缺乏對這個表uc_roles_expirations連接條件。另一張桌子上的桌子的關係是什麼?

我不知道,但我想你想這個查詢的結果,

SELECT GROUP_CONCAT(DISTINCT ord.uid SEPARATOR ',')AS u 
FROM `uc_order_products` ord_prod 
     INNER JOIN `uc_orders` ord 
      ON ord.order_id = ord_prod.order_id 
WHERE ord_prod.title LIKE '2012. évi%' AND 
     ord.uid NOT IN (SELECT uid FROM uc_roles_expirations) 
1
select GROUP_CONCAT(u ORDER BY u) 
from 
(
SELECT DISTINCT ord.uid AS u 
    FROM `uc_order_products` ord_prod, `uc_orders` ord, `uc_roles_expirations` re 
WHERE ord.order_id = ord_prod.order_id 
    AND ord_prod.title LIKE '2012. évi%' 
    AND ord.uid NOT 
IN (SELECT uid FROM uc_roles_expirations re) 
) t