1

2 つのテーブル (プロフィールと写真) を持つ Web サイトを作成します。写真付きのプロフィールを 1 つ取得したいのですが、同じプロフィールの写真がたくさんあります。1つだけ欲しい。

SELECT ph.path as photo, pro.id_profile, pro.name, pro.address 
FROM profile pro, photo_profile ph 
WHERE pro.id_profile = 41 
AND pro.id_profile = ph.id_profile;

私を助けてください!

4

3 に答える 3

4

limitselect ステートメントの句を使用して、返される行を制限できるはずです。

SELECT ph.path as photo, pro.id_profile, pro.name, pro.address 
FROM profile pro, photo_profile ph 
WHERE pro.id_profile = 41 
AND pro.id_profile = ph.id_profile
LIMIT 1;

句がないと、SQL は取得する行をORDER BY保証しないことに注意してください。

Allan例として、テーブルに 、BarbaraColinおよびという名前があるとしDebbieます。クエリ:

select name from people limit 1;

は1 つの行を取得しますが、不確定な行を取得します。一方で:

select name from people order by name asc limit 1;

あなたを取得しますAllan

句を含む、MySQL の完全な構文の詳細については、selectこちらを参照してください。limit

limitすべてのデータベース管理システムにあるとは限らないことに注意してください( MySQL にあり、ここでの特定のケースです) たとえば、DB2 はFETCH FIRST n ROWS同様のことを行うために使用します。

于 2012-11-10T05:20:07.530 に答える
0

データベースにプロファイルごとに複数の写真がある理由を知りたい場合は、この結果からデバッグすることをお勧めします:-

SELECT * FROM profile pro, photo_profile ph WHERE pro.id_profile = ph.id_profile;

これは、profileテーブルとphoto_profileテーブルの単なる結合です。

于 2012-11-10T05:22:12.020 に答える
0

必要に応じてLIMITorを使用できます。適切なを使用すると、読みやすさが向上します。GROUP BYJOIN

セットの最初の結果だけを取得するには、次を使用しますLIMIT

SELECT ph.path as photo, pro.id_profile, pro.name, pro.address 
FROM profile pro
JOIN photo_profile ph ON 
WHERE pro.id_profile = 41 AND pro.id_profile = ph.id_profile 
LIMIT 1;

結果をプロファイル ID でグループ化するには、次を使用しますGROUP BY

SELECT ph.path as photo, pro.id_profile, pro.name, pro.address 
FROM profile pro
JOIN photo_profile ph ON pro.id_profile = ph.id_profile
WHERE pro.id_profile = 41 
GROUP BY pro.id_profile;
于 2012-11-10T05:19:35.140 に答える