2012-04-25 59 views
2

使用phpMyAdmin 5.1.44試驗DML命令。MySQL多選擇模糊結果

我一直在線下面的教程。

SELECT book.b_isbn, publisher.p_name FROM 'book', 'publisher' WHERE book.b_title='DSA' 

表1

book 

b_id(PK) b_isbn  b_title p_id(FK) 
----------------------------------------- 
1   12345  DSA  1 
2   23456  SD  1 
3   34567  CSP  2 

表2

publisher 

p_id(PK) p_name 
-------------------- 
1   Fred 
2   John 

預期結果

b_isbn  p_name 
--------------------- 
12345  Fred 

實際結果

b_isbn  p_name 
---------------------- 
12345  Fred 
34567  John 

任何想法?

回答

1

你需要告訴MySQL如何加入表一起(沒有這一點,只是每本書的每一個出版商匹配) - 使用中的任何一個:

  1. 添加AND publisher.p_id = book.p_id到您的WHERE子句;

  2. 告訴MySQL加入ON那條件/ USING那一欄;

    ... FROM book JOIN publisher ON publisher.p_id = book.p_id WHERE ... 
    

    ... FROM book JOIN publisher USING (p_id) WHERE ... 
    
  3. 使用NATURAL JOIN擁有的MySQL想這就是你基於列名想要什麼。

    ... FROM book NATURAL JOIN publisher WHERE ... 
    
1

我認爲你需要把FK到PK的關鍵在哪裏聲明

SELECT 
    * 
FROM 
    book, publisher 
WHERE 
    book.p_id=publisher.p_id 
    AND book.b_title='DSA' 

甚至更​​好使用JOIN S:

SELECT 
    * 
FROM 
    book 
    JOIN publisher 
    ON book.p_id=publisher.p_id 
WHERE 
    book.b_title='DSA' 

或者,如果有,如果你不知道一個相應的值然後使用一個left join。就像這樣:

SELECT 
    * 
FROM 
    book 
    LEFT JOIN publisher 
    ON book.p_id=publisher.p_id 
WHERE 
    book.b_title='DSA'