2012-01-03 37 views
0

我已經匹配當前工作的PIONT如何在兩個表的SQL查詢,如何分配表別名

SELECT * 
FROM tracklisting 
INNER JOIN catelogue ON catelogue.`CAT NO.` = tracklisting.`TRACKLISTING CAT NO.` 
WHERE tracklisting.`ARTIST` LIKE 'placebo' 

這是ovblisy在我的曲目錶帶回記錄的搜索是「安慰劑'

現在我想要它在我的Db中搜索我的另一張桌子,catelogue。

我試圖做的代碼,但不斷收到此錯誤返回

1066 - 不是唯一的表/別名: 'catelogue'

這是我使用的代碼:

SELECT * 
FROM tracklisting, catelogue 
INNER JOIN catelogue ON catelogue.`CAT NO.` = tracklisting.`TRACKLISTING CAT NO.` 
WHERE tracklisting.`ARTIST` LIKE 'placebo' OR catelogue.`ARTIST` LIKE 'placebo' 

不幸的是,這些表格無法合併爲一個,因爲軌道列表涉及到catelogue表中的專輯。

我相信應該給catelogue表分配一個別名,但我試過並得到了相同的消息。我可能在做一些愚蠢的事情。

也應該因爲有沒有軌道列表的專輯迄今爲止的聯合更改?

非常感謝

編輯:

我已經試過這個代碼藏漢但無濟於事。它可以工作,但似乎沒有從catelogue表中返回任何記錄,只有tracklisting表。

SELECT * 
FROM tracklisting t 
INNER JOIN catelogue c ON c.`CAT NO.` = t.`TRACKLISTING CAT NO.` 
WHERE t.`ARTIST` LIKE 'placebo' 
OR c.`ARTIST` LIKE 'placebo' 

我似乎已經拿起了別名是如何工作的,謝謝你們。

我想要的基礎知識。它必須搜索兩個表,並且如果在catelogue表中找到記錄,它將按原樣顯示,但是如果在軌道列表中找到記錄,它必須顯示它與catelogue表中匹配的記錄。

軌道表列表中包含藝術家列的原因適用於各種藝術家專輯。

希望能幫助我想要達到的目標。

感謝

OK

後決定,一個JOIN可能會在此處是問題有人

INNER JOIN必須是正確的加入讓大家的代碼在這裏是正確的除了JOIN

SELECT * 
FROM tracklisting t 
RIGHT JOIN catelogue c ON c.`CAT NO.` = t.`TRACKLISTING CAT NO.` 
WHERE t.`ARTIST` LIKE 'placebo' 
OR c.`ARTIST` LIKE 'placebo' 

感謝幫助

回答

0

如果它們具有相同的字段,你可以嘗試:

SELECT field1, field2 
FROM tracklisting 
WHERE ARTIST LIKE '%mysearchstring%' 
UNION 
SELECT field1, field2 
FROM catelogue 
WHERE ARTIST LIKE '%mysearchstring%' 

或者,如果你想聯接,請嘗試:

SELECT * 
FROM tracklisting t 
INNER JOIN catelogue c ON c.`CAT NO.` = t.`TRACKLISTING CAT NO.` 
WHERE t.`ARTIST` LIKE '%mysearchstring%' OR c.ARTIST LIKE '%mysearchstring%' 
0

如果你要加入「catelogue」,不FROM條款列出來。

SELECT * 
FROM tracklisting t 
INNER JOIN catelogue c ON c.`CAT NO.` = t.`TRACKLISTING CAT NO.` 
WHERE t.`ARTIST` LIKE 'placebo' OR c.`ARTIST` LIKE 'placebo' 
+0

我將類列表從FROM子句中刪除,但它仍然只返回tracklisting表的結果。我希望它能返回 – Mark 2012-01-03 08:47:05

+0

的結果請查看@ Michiel的回答。 – 2012-01-03 08:47:57