-1

「food」と「whatToEat」の2つのテーブルを持つデータベースがあるとします。

「whatToEat」をクエリして、3つの行を見つけます。

id    Food     username
 1    Apple      John
 2    Banana     John
 3    Milk       Linda

「食べ物」の表からそれらを取得したい場合は、次のように実行できます。

SELECT * 
  FROM food 
 WHERE username='John' AND typeOfFood = 'apple' 
    OR typeOfFood = 'Banana' OR typeOfFood = 'Milk'

...しかし、これを動的に書き込むことは可能ですか。「whatToEat」テーブルは常に変更されるためです。または、ループが必要で、「whatToEat」内のオブジェクトごとに「food」テーブルを1つずつクエリする必要がありますか?

編集

上記は単なる例であり、実際のシナリオはオンラインゲームです。プレイヤーがゲームに参加するとき、彼は「matches_updated」テーブルに置かれます。このテーブルには、彼の名前と一致のID(または、同時に複数の場所にいる可能性があるため一致)が保持されます。プレーヤーが更新を受け取ったら、更新する必要のある一致があるかどうかを確認し( "matches_updated"テーブルをクエリ)、データを取得して、すべての情報が含まれる"matches"テーブルからプレーヤーに戻ります。試合について保存されます。

例:

プレーヤーのTimは、「mathces_updated」テーブルをクエリし、更新する必要のある2つの新しい一致があることを確認します。

   match_id   username
    1          Tim
    2          Tim
    2          Lisa
    1           John
    3           John

...彼は、「一致」テーブルに格納されているこれらの一致に関する情報を取得したいと考えています。

match_id   match_status player1Name Player1Score Player2Name Player2Score
   1           1           John         123         Tim          12
   2           1           Lisa          4          Tim          15
   3           1           John          0          Lisa         0
4

3 に答える 3

2

質問を正しく理解しているかどうかわかりません。

実際には、クエリされたテーブルに共通点があるかどうかによって異なります。

したがって、食品が一般的な列であると仮定すると、次のようなクエリを実行できます...

select * from food where food in (select food from whattoeat where username = ?)

問題が解決する場合は、試してみてください...

于 2012-04-27T05:57:44.777 に答える
1
SELECT * FROM food WHERE username='John'
于 2012-04-27T05:11:16.633 に答える
1
SELECT * FROM matches_updated JOIN matches
         ON matches_updated.match_id == matches.match_id
         WHERE matches_updated.user == "Tim"

--

おそらく、JOIN ステートメントが必要ですか?

SELECT * FROM food JOIN whattoeat
         ON food.username == whattoeat.username
         WHERE food.username == "John"

あなたの望む結果が何であるかを理解するのに本当に苦労しています.問題の両方のテーブルの例と、クエリの望ましい結果を投稿すると、役立つかもしれません.

于 2012-04-27T04:57:10.633 に答える