0

私は自分のテーブルからすべてを選択しています。次に、プレーヤーまたはプレーヤーが条件付きで他のテーブルに設定されているplayersかどうかを確認したいと思います。idname

と の 2 つのテーブルを取得playersshopました。

shop次の列があります: uiddatelinefromdone

私が言ったように、playersテーブルからすべてを選択しています。今度は、呼び出された結果に追加の列を追加したいと思います。was_shoppingそれは1when になりplayersます。idまたはplayersnameと どこ のどこかにshopありshopます。dateline与えられた私の変数よりも高いです。

すべてを正しく理解していることを確認するために、次のようにする必要があります(クエリではなく、クエリでどのように機能するかについての単なる単語の例です)。

SELECT *
FROM players
WHERE (players.id OR players.name)
IN (
    SELECT `uid` AND `from`
    FROM `shop`
    WHERE `dateline` >= xxxxx
   )

そしてもしplayersidまたはplayersnameの内部になりshopます。uidまたはshop。結果に別の列を追加する必要があります: from- OR (テーブルで見つかった場合は1、見つからない場合は 0)。dateline >= xxxxxwas_shopping10shop

わからない言葉があればコメントください。

4

2 に答える 2

0
Select p.*, case when s.uid is null then 0 else 1 end as was_shopping
From players as p
left join shop as s
where s.uid = p.id and s.dateline > = xxxxx
于 2012-05-18T21:44:29.007 に答える
0

あなたの説明から、これは正しい結果を返すと信じています。日付変更線の選択に 10 の値を使用していることに注意してください。

select p.*, case when s.uid is null then 0 else case when dateline>10 then 1 else 0 end end as was_shopping 
from players p
left join shops s
on p.id = s.uid or p.name like concat('%',`from`,'%')
where s.uid is not null
于 2012-05-18T22:13:51.920 に答える