2013-12-09 48 views
0

我在這個SQL查詢列在where子句是曖昧

SELECT * FROM `book` join `journal` 
WHERE `book-category` LIKE '$maincat2' 
    AND `book-category` LIKE '$subcat2' 
    AND `book-category` LIKE '$country2' 
    AND `book-category` LIKE '$procat2' 

表strukture面臨的一個問題「的書類」是同一本書=軸頸

的原因是什麼?

+6

這是不明確的,因爲這兩個表包含'同書本 - category'。你需要提供告訴mysql該列將被搜索的表格。例如'WHERE book。\'book-category \'...'或'WHERE journal。\'book-category \'...' –

+0

當然,一旦你得到這一個正確的答案,你會碰到另一個問題,即「一列如何同時匹配4個互斥模式?」一。 –

回答

1

也許是我,但你的查詢,因爲它是沒有多大意義的我。

也許你想這樣的事情(使用UNION代替JOIN),如果像你說的,表架構實際上是bookjournal

SELECT 'book' type, b.* 
    FROM book b 
WHERE book-category LIKE '$maincat2' 
    AND book-category LIKE '$subcat2' 
    AND book-category LIKE '$country2' 
    AND book-category LIKE '$procat2' 
UNION ALL 
SELECT 'journal', j.* 
    FROM journal j 
WHERE book-category LIKE '$maincat2' 
    AND book-category LIKE '$subcat2' 
    AND book-category LIKE '$country2' 
    AND book-category LIKE '$procat2' 
1

bookjournal都有一個book-category列,所以MySQL不知道應用哪一個條件。你可以通過用表名完全引用它們來解決這個問題。 例如: -

SELECT * FROM `book` join `journal` 
WHERE `book`.`book-category` LIKE '$maincat2' 
    AND `book`.`book-category` LIKE '$subcat2' 
    AND `book`.`book-category` LIKE '$country2' 
    AND `book`.`book-category` LIKE '$procat2'