2011-10-25 20 views
2

我已經研究了一下,到目前爲止我所有的嘗試都做得很少。我想在我的php腳本中執行一個mysql查詢,處理多個表。如何查詢2個表格和多列?

下面是表的樣子:

表1

表2

產品(名稱)

庫存

CATID

的ProductID

表3

product_url

「名稱」(表1)必須是穩健爲 「產品」(表2)。接下來,「庫存」(表2)必須=「Y」。最後,「CatID」必須是=「2」。

我嘗試有點是這樣的:

SELECT 1.name, 2.Product, 2.Inventory, 2.CatID 
FROM table1 1, table2 2 
WHERE 2.Inventory = 'Y' 
    AND 1.name = 2.Product 
    AND 2.CatID = '2' 

從結果來看,我會希望得到來自表的詳細信息,如產品說明,等這將是Table 1和Table ...我從未加入或查詢過2個(或更多)表格。任何幫助將不勝感激。

+3

請接受您的一些早期問題的答案。你會得到更快捷的幫助。 –

+2

如果't2.Product = t1.Name'和Name是t1中的唯一列,則不需要JOIN。 –

+0

在設計數據庫之前,您可能需要閱讀有關數據庫規範化的內容。這會在稍後爲您節省很多麻煩。 – dqhendricks

回答

0

試試這個:

SELECT table1.Name, table2.Product, tabl2.Inventory, table2.CatID 
FROM table1 INNER JOIN table2 
ON table1.Name = table2.Product 
WHERE table2.CatID = '2' 
+0

我試過這個,甚至在tabl2.Inventory中添加了缺少的「e」...它仍然不起作用。 $ query =(「SELECT table1.Name,table2.Product,table2.Inventory,table2.CatID FROM table1 INNER JOIN table2 ON table1.Name = table2.Product AND table2。CATID = '2'「); 而($測試= mysql_fetch_array($查詢)) { 回聲$測試[ '名稱']; } – NotJay

+0

的CATID = '2' 應該是WHERE子句,而不是在來自於我在原始文章中的錯別字編輯後的查詢是一個有效的查詢,儘管假設數據庫設置正確,並且您成功地從PHP代碼中傳遞了值,您可能會得到比預期更多的值,具體取決於表的結構和你的主鍵/外鍵,但是我們需要更多的信息來知道...... –

+0

$ test ['name']應該是$ test ['table1.name']; – onatm

0
SELECT t1.name, t2.Product, t2.Inventory, t2.CatID, t2.ProductID 
FROM table1 t1 
INNER JOIN table2 t2 ON t2.Product = t1.name 
WHERE t2.Inventory = 'Y' AND t2.CatID = 2 

我很抱歉地說,你有數據庫與設計很差的工作。如果我給您的查詢不起作用,請確保您的表中的數據符合您要查找的條件。

還要記住,當您在PHP中訪問這些字段時,大小寫很重要。你需要這樣做:

<?php 

$q = QUERY FROM ABOVE 
$r = mysql_query($q); 
while($row = mysql_fetch_assoc($r)) { 
    $name = $row["name"]; 
    $product = $row["Product"]; 
    $inventory = $row["Inventory"]; 
    $catid = $row["CatID"]; 
    $productid = $row["ProductID"]; 
} 

?>