感謝您對此有所幫助;) 我是新來的SQL,希望解決somethign只是一個查詢,我不知道該怎麼做.-SQL選擇 - >產品 - >評論 - >用戶
基本上我有一個產品表,用戶的表和意見表,請按products.id連接 - > comments.pid和user.id - > comments.uid,
我想知道創建1個查詢並獲取包含子註釋的所有產品(包括用戶名)的最佳做法是什麼?
感謝您對此有所幫助;) 我是新來的SQL,希望解決somethign只是一個查詢,我不知道該怎麼做.-SQL選擇 - >產品 - >評論 - >用戶
基本上我有一個產品表,用戶的表和意見表,請按products.id連接 - > comments.pid和user.id - > comments.uid,
我想知道創建1個查詢並獲取包含子註釋的所有產品(包括用戶名)的最佳做法是什麼?
Istead使用JOIN
你可以試試這個的,
select p.id,u.name,c.data
from products as p,user as u,comment as c
where p.id = c.pid and u.id = c.uid;
[爲什麼SQL ANSI-92標準沒有被ANSI-89更好地採用?](http://stackoverflow.com/questions/334201/why-isnt-sql-ansi-92-standard -better-adopt-by-ansi-89) –
另外,我懷疑在這種情況下,如果產品沒有評論,外連接是必要的。 – eggyal
@eggyal這兩個用戶都與評論和評論只有那些將被顯示的用戶產品.. –
學習加入是爲了解決這樣的問題
說明
的最佳方式我們在這裏要做的是創建一個虛擬表,它根據一些關係提取記錄。
我已經創建了三個在這裏表
且有
現在你可以使用加入到過濾結果
SELECT product.id,user.name,comments.DATA FROM comments LEFT JOIN product ON comments.prod_id = product.id INNER JOIN USER ON comments.user_id = USER.id;
,或者如果你不想使用加入您可以簡單地創建一個關係 但請注意,使用連接可能是最好的方式做到這一點
SELECT product.id,USER.name,comments.DATA
FROM product,USER,comments
WHERE product.id = comments.prod_id AND USER.id = comments.user_id;
您可以點擊這裏
結果你也想嘗試寫一行代碼整個應用程序?如果您需要兩個查詢,請使用兩個查詢。 –
同意Mark,如果您考慮在一個查詢中獲取所有這些數據,則將您的應用程序的不同部分組合起來。相反,將評論與產品分開會更有意義。這樣你可以更高效地工作。接下來,情況在將來可能會變得更加複雜,例如,您還需要產品的類別。只需SELECT id,nam FROM products WHERE id = 1和另一個查詢:SELECT users.name,comments.comment FROM INNER INNER將用戶加入users.id = comments.uid WHERE註釋。pid = 1 –
馬克,我同意你在一個頁面上顯示一個產品的數據,但是如果你需要創建一個像pinterest這樣的產品列表......你認爲這是循環槽產品列表的最佳做法多個查詢?在一個交通繁忙的網站上,這可能會導致服務器無法使用.-只是想想列出100個產品,並從每個網站獲得5條評論.-將會有101條查詢,而使用連接的條件是1條,我的問題是我不知道連接的限制,因爲我是新進入sql.- – DiegoMol