2013-12-11 30 views
0

我有三個表 -加入兩個表以打印選擇性數據。

表A元數據:

idA(PK) descA  idB 

表B元數據:

idB(PK) assetidC 

表C元數據:

assetidC(PK) descC 

這是一個一對多的關係

下選擇查詢 -

select distinct A.idA, C.descC 
from tableA A, tableB B, tableC C 
where C.descC like '%test%' 
    and C.assetidC = B.assetidC 
    and B.idB = A.idB 

返回結果一樣 -

idA  descC 
1   "I test Java" 
1   "I test Oracle" 
1   "I test Windows" 
1   "I test Software" 
2   "I test Java" 
2   "I test Oracle" 
2   "I test Windows" 
3   "I test Java" 
3   "I test Oracle" 
4   "I test Windows" 
4   "I test Software" 

我想要的是什麼 - 不同IDAS 無論哪個descC它挑選!

idA  descC 
    1   "I test Java" 
    2   "I test Java" 
    3   "I test Java" 
    4   "I test Software" 

應該向查詢中添加什麼?

回答

2

在MySQL中,你可以在此使用group by而不是distinct做:

select A.idA, C.descC 
from tableA A, tableB B, tableC C 
where C.descC like '%test%' 
    and C.assetidC = B.assetidC 
    and B.idB = A.idB 
group by A.idA; 

這恰巧使用所謂的隱藏列,其中在select列不在group by的MySQL的一個特點。 MySQL包含這些列的任意值。這看起來正是你想要的。通常情況下,我覺得這個功能比有幫助的更困惑。請注意,該列是任意不是隨機。您可能會獲得所有列的相同值。

+0

'從master_map A,資產B,asset_editionÇ 選擇A.parent_master_id,C.source_uri其中C.upload_uri LIKE '%VOLUME1 /照片%' 和C.asset_id = B.asset_id 和B.master_id = A .child_master_id' 這是實際的查詢返回約700個結果...當我添加groupby ...它返回超過6000個結果。 – ishkee

+0

對不起,但group by子句將來自三個表的所有數據分組......有些東西搞亂了。 – ishkee