2

phpMyAdmin5.1.44を使用してDMLコマンドを試してみてください。

私はオンラインでチュートリアルをフォローしています。

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

何か案は?

4

2 に答える 2

1

whereステートメントのpkキーにfkを配置する必要があると思います

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

またはさらに良い使用法JOIN

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'
于 2012-04-25T12:46:05.477 に答える
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 ...
    
于 2012-04-25T12:47:43.487 に答える