2012-12-09 20 views
1

一切,我有一個MySQL表是這樣的:
MySQL的SELECT其中,如果商店有X,告訴我,他們有

STORES (SPID, StoreID, ProductID); 

和數據是這樣的:

{ 1 | s1 | p2 } 
{ 2 | s1 | p7 } 
{ 3 | s1 | p8 } 
{ 4 | s2 | p1 } 
{ 5 | s2 | p3 } 
{ 6 | s2 | p6 } 
{ 7 | s2 | p9 } 
{ 8 | s3 | p2 } 
{ 9 | s3 | p5 } 

我想:
使用MYSQL SELECT查詢來獲得結果, e如果商店有某種產品,則會返回該商店所有產品的清單。 例如,如果我在尋找「p2」,那麼我想知道「s1」有「p2,p7,p8」,「s3」有「p2,p5」。

如果您需要更多信息,請讓我知道。我不知道需要什麼來解決這個問題

回答

1

你可以用一個子查詢做到這一點(這可能是爲什麼我不能搜索並找到答案!):

SELECT * FROM STORES WHERE StoreID IN (SELECT StoreID FROM Stores WHERE ProductID='p2') 
+0

首先,簡單,有效。謝謝! – tnt0932

1

的簡單方法將使用WHERE INWHERE EXISTS方法從存儲列表中的商店中選擇與目標產品匹配的所有行。

SELECT 
    StoreID 
    , ProductID 
FROM 
    Stores 
WHERE 
    StoreID IN 
     (SELECT 
      StoreID 
     FROM 
      Stores 
     WHERE 
      ProductID IN ('p2') 
       /*also, using IN here in the sub query will allow 
       you to specify more than one product in the future*/ 
     ) 

或者,您可以加入表本身:

SELECT 
    S.StoreID 
    , S.ProductID 
FROM 
    Stores S 
    INNER JOIN Stores SProd 
     ON S.StoreID = SProd.StoreID 
WHERE 
    SProd.ProductID IN ('p2') 
+0

謝謝你的詳細解答。只要我獲得更高的聲譽,我就會高興起來! – tnt0932

0
select 
    st1.store_id, st1.product_id, st2.store_id, st2.product_id 
from 
    stores st1 
join 
    stores st2 on st2.store_id = st1.store_id 
where 
    st1.product_id='p2' 
order by store_id, product_id 
+0

感謝您的快速回答! – tnt0932

1

您可以用自做加盟。請參閱SQL Fiddle進行測試。

select s1.storeid, s1.productid 
from stores s1 
join stores s2 on s2.storeid = s1.storeid 
where s2.productid = 'p2' 
+0

感謝您的答案和SQL小提琴! – tnt0932

相關問題