0

2つの異なるテーブルから選択したいと思います。

最初の表ではすべてを選択したいのですが、必要なものだけを表示します。

2番目のテーブルでは、プロフィール写真のみを選択したいのですが、ユーザーがプロフィール写真を持っていない場合でも、ユーザーテーブルのデータを選択する必要があります。

内部結合を使用しています。以下は私のコードです:

SELECT * FROM
 tish_user INNER JOIN tish_images
 ON tish_user.user_id = tish_images.user_id
 WHERE tish_images.prof_image = 1
4

5 に答える 5

2

2つの異なるテーブルから選択するには、catch-allを使用せずに、必要な各テーブルの値を指定する必要があります*。INNERJOINの代わりにLEFTJOINを使用すると、クエリを実行しているテーブルを1つのポイントで接続できます。その時点で、テーブル間のあらゆる種類の関係を照会できます。

このクエリは、が1の場合は一致するレコードを返し、それ以外の場合はNULLuseridを返すすべてのを提供します。tish_usertish_images.prof_imageprof_image

SELECT 
    tish_user.user_id, 
    tish_images.prof_image 
FROM
    tish_user 
LEFT JOIN tish_images
ON tish_user.user_id = tish_images.user_id
AND tish_images.prof_image = 1
于 2013-02-22T10:04:23.923 に答える
1

の代わりにLEFTJOINを使用しINNER JOINます。

SELECT * FROM
tish_user LEFT JOIN tish_images
ON tish_user.user_id = tish_images.user_id
WHERE tish_images.prof_image = 1

説明

LEFT JOINは、右側のテーブルにエントリがない場合でも、左側のテーブルのすべての行を選択します(この場合、右側のテーブルの列はになりますNULL

RIGHTJOINもチェックしてください。右側でも同じことをします:)

于 2013-02-22T10:03:36.350 に答える
1

これを試して:

SELECT *
FROM
 tish_user U
    LEFT JOIN tish_images I
 ON U.user_id = I.user_id
   AND = I.prof_image = 1 
于 2013-02-22T10:03:46.840 に答える
1

この方法を試してください

SELECT * FROM
tish_user, tish_images
WHERE tish_user.user_id = tish_images.user_id
AND
tish_images.prof_image = 1;

これはあなたを助けるかもしれないと思います。

乾杯

于 2013-02-22T11:26:36.097 に答える
1

これを試して:

tish_userテーブルのuserID、firstname、lastname、およびtish_imagesテーブルのprof_imageを表示するとします。

  SELECT tish_user.userd_id, tish_user.firstname, tish_user.lastname, tish_images.prof_image
FROM tish_user tish_user LEFT JOIN tish_image tish_image ON tish_user.user_id=tish_images.user_id WHERE tish_image.prof_image=1

私はこれでうまくいくと思います。

于 2013-02-28T00:52:43.977 に答える