2016-06-27 4 views
0

まず、サンプルレコードを示します。複数のINを含む複合SQLステートメント

表:objekte

+--------+----------+---------+------------+ 
| objid | objidate | objmask | deletedate | 
+--------+----------+---------+------------+ 
| 271136 | 54084960 | 4  | 0   | 
| ... | ...  | ...  | ...  | 
+--------+----------+---------+------------+ 

表:objkeys

+----------+--------+------------+-------------------------------------+ 
| parentid | okeyno | okeyname |    okeydata    | 
+----------+--------+------------+-------------------------------------+ 
| 1511160 |  1 | BelegNr. | 634685        | 
| 1511160 |  2 | BELEGARTBK | oU = Lieferschein ohne Unterschrift | 
+----------+--------+------------+-------------------------------------+ 

は、ここです私はこれまで試してみましたです:

SELECT * FROM objekte 
WHERE objid IN (
      SELECT MIN(parentid) as parentid FROM objkeys 
      WHERE okeyname = 'BelegNr.' 
      GROUP BY okeydata 
      HAVING COUNT(okeydata) = 1 
    ) AND objmask = '69' AND deletedate = '0' AND DATEADD(mi, objidate, '30.12.1899') >= DATEADD(day, -30, getdate()) 

予想される出力:
私は私のSQLコードでBELEGARTBK is "oU = Lieferschein ohne Unterschrift".

は、私はすべての現在を表示することができる場所すべてokeyname "Belegn"のための1つのレコードのみが存在するテーブルobjekteobjkeys.parentid = objekte.objid)からをOBJID表示したいです「ユニーク」なオブジェクト。しかし、私は現時点で "ベルガルツク"でフィルタリングすることはできません。これを行う簡単な方法はありますか?

+0

私はあなたがそこに示されているより多くのデータとSQLのフィドルを作成するために助言します。 'BelegNr.'と' BELEGARTBK'値にどのくらい重複した 'okeyname'があるかは、私には非常に不明です。このデータベース設計は良く見えません –

答えて

0

申し訳ありませんが、それはあなたが求めるものを非常に明確ではありません、このネストされたクエリを試してみてください。

SELECT parentid FROM objkeys 
    WHERE okeyname = 'Belegn' and okeydata = 'Lieferschein ohne Unterschrift' 
    GROUP BY parentid 
    HAVING COUNT(*) = 1 
関連する問題