10

OK、2 つのテーブルの結合に問題があります (INNER JOIN を使用)。最初のテーブルにはカテゴリ リスト (フォト アルバムやブログ投稿など) が含まれ、2 番目のテーブルには「データ」が含まれます。

私はこのように試しました:

SELECT galeries_id, galeries_title, 
       photos.photos_id, photos.photos_gal_id, photos.photos_link 
FROM galeries 
INNER JOIN photos 
ON galeries.galeries_id=photos.photos_gal_id 
GROUP BY photos_gal_id

これにより、1 つの重要な例外を除いて、テーブルを適切に結合するという公正な結果が得られます。

テーブル "photos" に "photos_gal_id" (たとえば "2") を含む行がない場合、galeries テーブルで egzist を実行しても、そのカテゴリのカテゴリ (galeries_id、galeries_title) は返されません。

次の理由により、論理的です。

 ON galeries.galeries_id=photos.photos_gal_id

ここで、2 番目のテーブルに関連する行がないものも表示するために、この部分を採用する必要があります。

私が取得しようとしている結果は次のとおりです。

galeries_id      galeries_title       photos_id       photos_link
     1               blabla              3            test.jpg
     2               bla bla2                                     
     3               etata               5            test.jpg

私はそれを十分に説明したいと思います:)ありがとう..

4

2 に答える 2

37

写真に一致する ID がないからの行を保持するには、ギャラリーのgaleries写真をLEFT JOINの代わりに結合する必要がありINNER JOINます。

SELECT galeries_id, galeries_title, 
       photos.photos_id, photos.photos_gal_id, photos.photos_link 
FROM galeries 
LEFT JOIN photos 
ON galeries.galeries_id=photos.photos_gal_id 
GROUP BY photos_gal_id

 

これにより、次のことが得られます。

galeries_id      galeries_title       photos_id       photos_link
     1               blabla              3            test.jpg
     2               bla bla2            NULL         NULL                
     3               etata               5            test.jpg

 

NULL を空の文字列に置き換えたい場合は、次を使用できます。

SELECT
  IFNULL(photos.photos_id, ''),
  IFNULL(photos.photos_link, '')
于 2013-07-30T15:00:02.610 に答える
5

それはただではないでしょうか

LEFT JOIN photos

埋まっているかどうかに関係なく、レコードが必要なためですか?

于 2013-07-30T15:02:31.640 に答える