From fe79dd4081186b7e73d5efff215a6e1c86cdbbf7 Mon Sep 17 00:00:00 2001 From: Stefan Koch Date: Tue, 30 Jul 2013 12:56:04 +0200 Subject: [PATCH] =?UTF-8?q?Korrektur=20+=20Erg=C3=A4nzung?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Korrektur: person1 wird vom Subquery auch benötigt wegen späterem WHERE-Vergleich Ergänzung: SQLite konnte kein EXCEPT, daher hab ich es mit NOT EXISTS nachgebaut, siehe auch http://stackoverflow.com/questions/3831969/sqlite-delete-results-from-select-with-except --- .../musterloesung-db-2012-09-24/d2c2.sql | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/documents/musterloesung-db-2012-09-24/d2c2.sql b/documents/musterloesung-db-2012-09-24/d2c2.sql index 5a944df..8513bf4 100644 --- a/documents/musterloesung-db-2012-09-24/d2c2.sql +++ b/documents/musterloesung-db-2012-09-24/d2c2.sql @@ -1,13 +1,34 @@ SELECT f1.person2, f2.person2 FROM ( - SELECT person2 FROM FriendshipSymmetric WHERE person1 = + SELECT * FROM FriendshipSymmetric WHERE person1 = ) f1 JOIN ON ( - SELECT person2 FROM FriendshipSymmetric WHERE person1 = + SELECT * FROM FriendshipSymmetric WHERE person1 = ) f2 EXCEPT ( SELECT * FROM FriendshipSymmetric ) WHERE f1.person2 != f2.person2 + + +Ohne EXCEPT (da ich mir nicht sicher bin, ob es nun SQL-Standard +ist oder nicht, z.B. SQLite kenn kein EXCEPT, auf einer Übersicht +stand es aber bei SQL89 angehakt dabei). +Hinweis: NOT EXISTS ist True, gdw die Unterabfrage genau 0 +Zeilen enthält. + +SELECT f1.person2, f2.person2 +FROM ( + SELECT * FROM FriendshipSymmetric WHERE person1 = 4 +) f1 +JOIN +( + SELECT * FROM FriendshipSymmetric WHERE person1 = 4 +) f2 ON f1.person1 = f2.person1 +WHERE f1.person2 != f2.person2 +AND NOT EXISTS +( + SELECT * FROM FriendshipSymmetric f WHERE f.person1 = f1.person2 AND f.person2 = f2.person2 +)