2012-08-15 43 views
0

使用MySQL和PHP。SQL從表中選擇品牌,如果其他表具有該品牌的產品

我有兩個表產品和股票。

產品 has {productID |產品|品牌|}

股票有{ID | storeID | productID | qty |價格}

我需要獲得特定商店的所有品牌。

所以這裏是我有什麼不起作用。

SELECT DISTINCT brand 
    FROM products 
WHERE 'products.productID' = 'stock.productID' 
    AND 'stock.storeID' = 1 

如果我刪除比較「WHERE」它將返回所有品牌。

+0

單引號只左右字符串文字,而不是像標識表或列名稱使用。你實際上要求數據庫比較單詞「product.productID」到「stock.productID」,而不是任何表或列。不要將引號與'反引號'混淆。 – 2012-08-15 04:35:00

回答

3

嘗試

Select p.brand FROM products p, stock s 
WHERE p.productID=s.productID and s.storeID='1' 
+0

這很好,只需在** SELECT **之後添加** DISTINCT **即可。 – flip66 2012-08-15 04:52:08

1
SELECT DISTINCT p.brand 
FROM products p inner join stock s on p.productID=s.productID 
WHERE `stock.storeID` = 1 

紀念'和'

+0

即使列存在,我也會收到以下錯誤。 **#1054 - 'where子句'中的未知列'stock.storeID'** – flip66 2012-08-15 04:43:37

+0

-1'stock.storeID'應該是'stock'.'stockID'。用兩個反引號圍繞表名和其他名字而不是完整的tablename.columnname('.'應該被排除) – diEcho 2012-08-15 04:46:01

0

之間的差異嘗試

"SELECT p.* FROM Products p 
INNER JOIN stock s USING(productID) 
WHERE s.storeID = '".(int)$givenID."' 
GROUP BY p.brand"; 
+0

請有禮貌地提及投票原因,以便我可以知道我的錯誤。 – diEcho 2012-08-15 04:35:14

0

我們可以寫這樣也

SELECT DISTINCT p.brand FROM products p , stock s where p.productID=s.productID(+) and stock.storeID = 1 
0

試試這個:

SELECT DISTINCT p.brand 
FROM products p 
      INNER JOIN stock s 
        ON p.productID=s.productID 
WHERE s.`storeID` = 1 
0

這將有助於

select p.brand 
    from product p, stock s 
where p.productID = s.productID 
    and s.storeID = 1