MySQL - wie schreibe ich diese Abfrage

9

Ich bin sehr neu in SQL und ich wollte etwas Hilfe beim Schreiben dieser SQL-Abfrage.

Ich habe eine Filmtabelle wie folgt:

%Vor%

Nun möchte ich alle Paare von Schauspielern und Regisseuren ausdrucken, die nicht miteinander gearbeitet haben - zB in diesem Fall wird es (a, BB) und (d, AA) ausgedruckt.

    
user2316569 09.08.2013, 00:20
quelle

4 Antworten

2

Du kannst es so machen:

%Vor%

Die Idee ist, alle möglichen Paare von Schauspielern und Regisseuren zu produzieren (das kartesische Produkt tritt in die Mitte der Anfrage) und filtert dann seine Ergebnisse, um durch einen Film verbundene Paare auszuschließen (die NOT EXISTS Bedingung).

Hier ist eine Demo auf sqlfiddle.

    
dasblinkenlight 09.08.2013, 00:28
quelle
1

Ich würde dies tun, indem ich zuerst alle Paare von Schauspielern und Regisseuren mit einem Cross-Join (dh kartesisches Produkt ) entwickeln würde, und dann filtern Sie diese Liste mit der Tabelle der beobachteten Beziehungen.

%Vor%

SQLFiddle Demo (Das Schema wurde im Grunde von derblinkenlicht Fidel gespült, seit er mich dazu geschlagen hat).

    
David Marx 09.08.2013 00:29
quelle
1

Eine Alternative:

%Vor%

Geige hier .

Eine andere Alternative:

%Vor%

Geige hier .

    
Mosty Mostacho 09.08.2013 01:09
quelle
0

Auch im kartesischen Produkt (mit einigen Unterschieden zu früheren Antworten):

%Vor%

Geige

    
Franco 09.08.2013 01:43
quelle

Tags und Links