2012-10-01 33 views
0

我試圖從「我可以讓它工作」到「我可以使其正常工作」來提升我對mysql的知識。我正在與加入現在,我想知道做下面的最佳方式:加入MYSQL表的正確方法

我有2個表「項目」和「類別」。在「items」表中,我有一個名爲category的字段,它將鏈接到「categories」表主鍵cid。這樣做的最好方法是什麼?這是我怎麼一直在做,但我覺得這是不是最好的方式通過任何手段

SELECT C.something, C.soemthing 2 FROM categories C, items I WHERE C.cid=I.category AND C.categoryName='New' 
+0

它的工作在我的代碼就好了,我一直在使用,現在好幾年連接表的方式。你是什​​麼意思,它不起作用?我知道這並不是我在開始編程時學習它的最好方式,所以現在這是一個壞習慣。 – Dave

回答

4

您的查詢已經是正確的,但我會建議使用ANSI SQL-92格式

SELECT C.something, C.soemthing2 
FROM categories C INNER JOIN items I 
       on C.cid=I.category 
WHERE C.categoryName='New' 

問題,你想達到什麼目的?

+0

我只是想編寫最優化的查詢。我覺得我寫作的方式太籠統了,不能成爲做這件事的「最佳方式」。 – Dave

+0

不,你做得很好。但是您正在使用舊的連接語法。 –

+0

好吧,我只是想確認。非常感謝 – Dave

0

你的查詢將返回正確的結果集,但以下是更具可讀性:

SELECT C.something, C.soemthing 2 
FROM categories C 
INNER JOIN items I ON C.cid = I.category 
WHERE C.categoryName='New'; 
+0

您的查詢很好,但誤導性解釋爲-1。較舊的連接語法將導致相同的查詢計劃,所以它不是*低效的*,它更容易出錯並且可讀性較差。 –

+0

我的印象是,整個笛卡爾產品都被退回,然後使用OP的方法進行過濾。感謝您的教程,我已經編輯我的帖子來反映這一點。 –