0

これに似た問題に関するスタックオーバーフローの無数のスレッドを読みましたが、問題を解決し、さまざまな MySQL JOIN クエリを理解するのに苦労しています。私は MySQL を学び始めたばかりですが、何か助けていただければ幸いです。

私は3つのテーブルを持っています:

  1. 競売
  2. カテゴリー
  3. 多く

オークションとカテゴリには、それぞれ一意の主キーとオークションの日付、カテゴリ タイトル列があります。

lot は、ロットのタイトル、ロットの説明などを表示し、それぞれの ID を使用してオークションおよびカテゴリ テーブルへのリンクを表示します。

オークションの日付とカテゴリのタイトルを含むすべての行を表示するロット テーブルを表示したいだけです。

私の失敗した試み:

SELECT l.lotid, l.lotnumber, l.lottitle, l.lotdescription, c.categorytitle, a.auctiondate, l.estimatefrom, l.estimateto, l.photo, l.datecreated, l.lastmodified 
FROM lot l
JOIN category c ON l.categoryid = c.categoryid
JOIN auction a ON l.auctionid = a.auctionid
ORDER BY l.lotnumber;

これは単に WHERE クエリのように動作しているだけであり、一致しないcategorytitle行を省略しています。auctiondate

簡単な修正はありますか?

どうもありがとう

4

3 に答える 3

1

使用LEFT JOIN:

SELECT 
    l.lotid, 
    l.lotnumber, 
    l.lottitle, 
    l.lotdescription, 
    IFNULL(c.categorytitle,'n/a'), 
    IFNULL(a.auctiondate,'n/a'), 
    l.estimatefrom, 
    l.estimateto, 
    l.photo, 
    l.datecreated, 
    l.lastmodified 
FROM 
    lot l
LEFT JOIN category c 
    ON l.categoryid = c.categoryid
LEFT JOIN auction a 
    ON l.auctionid = a.auctionid
ORDER BY 
    l.lotnumber;
于 2013-08-08T14:04:41.813 に答える
0

左結合または右結合を使用して行数を減らすだけで、適切なデータを取得できます。

ここにチュートリアルがあります: LEFT JOIN & RIGHT JOIN .

于 2013-08-08T14:07:22.343 に答える