1

'OR'関数のようにこの方法でクエリを実行することは可能ですか。

更新された例:

Select S.*, U.* from Staff S, Unit U where S.Unit='' OR S.Unit= U.UnitCode;

スタッフテーブルスキーマ:

Staff ID, Staff Name, UnitCode, StaffNumber

ユニットスキーマ:

UnitCode, ClassCode

上記の更新された例は機能します。ただし、ユニットが空白のスタッフレコードは、すべてのユニットコードと重複します。

結果出力の例:

Staff ID     Staff Name     UnitCode     ClassCode    Staff Number
1            John            IT1         B123         234
2            Sally           BUS2        B234         0589
3            Johnson         IT1         B123          111
4            Johnson         BUS2        B234          111

ありがとう

4

4 に答える 4

2

SQLiteを使用しているため、OR代わりに使用してください||

Select S.*, U.* 
from Staff S, Unit U 
where S.Unit = '' OR S.Unit= U.UnitCode;

この状態を削除した場合の結果はどうなりますか?S.Unit = ''

Select S.*, U.* 
from Staff S INNER JOIN Unit U 
         on S.Unit = U.UnitCode;

更新1

これを試してみませんか?

SELECT x.*
FROM Staff x INNER JOIN
    (Select DISTINCT S.StaffID
     from Staff S INNER JOIN Unit U 
             on (S.Unit = U.UnitCode) OR
                (S.Unit = '')
     ) y ON x.StaffID = y.StaffID
于 2012-07-18T06:58:25.860 に答える
1

はい、できます。||の代わりにORを使用してください

于 2012-07-18T06:44:29.120 に答える
1
Select S.*, U.* from Staff S, Unit U where S.Unit='' OR S.Unit IS null OR S.Unit= U.UnitCode;

編集:

SELECT 
CASE WHEN S.Unit='' THEN S.Unit END AS blankOne, 
CASE WHEN S.Unit= U.UnitCode THEN S.Unit END AS MatchOne
FROM Staff S, Unit U
WHERE S.Unit= U.UnitCode
于 2012-07-18T06:51:40.290 に答える
1

私はあなたが左参加した後だと思います:

Select S.*, U.* 
  from Staff S
  left join Unit U 
    on S.Unit= U.UnitCode

これにより、ユニットからすべてのスタッフレコードと一致するレコードが取得されます(存在する場合)。このレコードのユニットのすべての列がnullでない場合。

于 2012-07-18T07:42:01.983 に答える