2011-08-12 5 views
0

これらの2つのクエリを一緒に結合するにはどうすればよいですか。クエリへの参加ですか?

SELECT * 
    FROM tbl_person 
WHERE tbl_person.status_id = '+ status_dg.selectedItem.status_id +'; 

SELECT * 
    FROM tbl_settings 
WHERE tbl_settings.status_id = '+ status_dg.selectedItem.status_id +'; 

私はこれを試しましたが、うまくいかないようです。

SELECT * 
    FROM tbl_person, tbl_settings 
WHERE tbl_person.status_id = '+ status_dg.selectedItem.status_id +' 
    OR tbl_settings.status_id = '+ status_dg.selectedItem.status_id +'; 

ここでは、私が何をしようとしているかについてもう少し詳しく説明します。

両方のテーブル(tbl_person、tbl_settings)では、status_idが外部キーです。私のアプリケーションでは、ユーザーはステータスを作成したり削除したりすることができます。だから私が書こうとしているこのクエリは、ステータスが削除されているときです。ステータスが削除される前に、tbl_personとtbl_settingsの両方をチェックして、削除されているステータスがいずれかのテーブルに存在するかどうかを調べる必要があります。いずれかのテーブルが削除されている状態に一致する場合、私はそのユーザーを昇格させる必要があります。

これが役に立ちます。あなたのテーブルのスキーマの詳細情報がない

+5

私たちに2つのテーブルの定義を教えてください。 – Bohemian

+0

少なくとも2つの元のクエリの出力例と組み合わせたクエリの予想される出力を投稿してください。 –

答えて

0

、試してみてください。

SELECT * 
    FROM tbl_person, tbl_settings 
WHERE tbl_person.status_id = tbl_settings.status_id 
     AND tbl_person.status_id = '+status_dg.selectedItem.status_id+' 

これはstatus_idに、2つのテーブル、tbl_persontbl_statusに参加し、そして唯一のstatus_id = '+status_dg.selectedItem.status_id+'行を取得します。

0

テーブルを結合するには、結合フィールドを定義する必要があります。この場合は、status_idフィールドと思われます。

これは正しく動作しない可能性がありますが、あなたは最後の行を見れば、あなたはあなたのクエリであることが必要になります:

SELECT * 
FROM tbl_person, tbl_settings 
WHERE 
    (tbl_person.status_id='+status_dg.selectedItem.status_id+' 
    OR tbl_settings.status_id='+status_dg.selectedItem.status_id+') 
    AND tbl_person.status_id = tbl_settings.status_id; 
+0

代わりにANSI標準の "join"構文を使用することをお勧めします。しかし、私は「参加する」ことが必要でさえあるのかどうかも分かりません。十分な情報がありません。おそらくOPは「組合」を望んでいる(下記のユーザ194076)。 – paulsm4

1

は、おそらく労働組合が必要なものを知っていますか?

SELECT * 
    FROM tbl_person 
WHERE tbl_person.status_id = '+ status_dg.selectedItem.status_id +' 
union 
SELECT * 
    FROM tbl_status 
WHERE tbl_status.status_id = '+ status_dg.selectedItem.status_id +' 

1.すべてのレコードを選択するには、「*」を使用してください。取得する列のセットを指定する必要があります。
2.この行:WHERE tbl_person.status_id = '+ status_dg.selectedItem.status_id +'は完全に間違っているようです。あなたが最初にtbl_personとtbl_statusを使用するので、私はあなたの質問に少し混乱しています

SQL

にビジネスロジックを置かないとはい、詳細

1

を提供する必要があり、その後、あなたはtbl_personとtbl_settingsに参加してテストしてみました。
参加したいテーブルは2つありますか?
tbl_personとtbl_settingsに参加したい場合は、どうですか?

SELECT * 
FROM tbl_person JOIN tbl_setting 
ON tbl_person.status_id = tbl_settings.status_id 
WHERE tbl_person.status_id = '+status_dg.selectedItem.status_id+'