Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]13077[/thread]

Gegenteil von "a JOIN b"

Leser: 3


<< >> 8 Einträge, 1 Seite
Hagen
 2009-01-29 13:46
#118487 #118487
User since
2007-09-06
233 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich habe zwei Tabelle aus denen Datensätze miteinander verknüpft werden (z.B. über JOIN). Normalerweise sollte es zu jeder Zeile in Tabelle A eine Zeile in Tabelle B geben ... gibt es aber in meinem Fall leider nicht. Gibt es in SQL einen Befehl bzw. einen Ansatz "zeige mir die restlichen Zeilen"?
Gruß
Hagen
renee
 2009-01-29 14:03
#118492 #118492
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Meinst Du vielleicht [sql]SELECT * FROM A LEFT JOIN B ON A.ID = B.fk_A_ID[/sql]?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Hagen
 2009-01-29 14:11
#118499 #118499
User since
2007-09-06
233 Artikel
BenutzerIn
[default_avatar]
Nicht ganz:
[sql] SELECT * FROM A JOIN B ON A.ID_1 = B.ID_2[/sql]
habe ich .. das sind meine Ergebnisse.

Jetzt will ich aber wissen, welche Datensätze/Zeilen aus Tabelle B NICHT angezeigt wurden ... also die "Restmenge".
Gruß
Hagen
renee
 2009-01-29 14:28
#118500 #118500
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
(ungetestet)[sql]SELECT * FROM B WHERE B.B_ID NOT IN (SELECT B_ID FROM B JOIN A ON A.ID = B.ida);[/sql]
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
pq
 2009-01-29 15:52
#118508 #118508
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
Hagen+2009-01-29 13:11:22--
Nicht ganz:
[sql] SELECT * FROM A JOIN B ON A.ID_1 = B.ID_2[/sql]
habe ich .. das sind meine Ergebnisse.

Jetzt will ich aber wissen, welche Datensätze/Zeilen aus Tabelle B NICHT angezeigt wurden ... also die "Restmenge".

das geht mit einem LEFT JOIN!
einfach WHERE rechteseite.id IS NULL
fertig.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Hagen
 2009-01-30 12:47
#118526 #118526
User since
2007-09-06
233 Artikel
BenutzerIn
[default_avatar]
Prima, das mit dem LEFT JOIN hat funktioniert, danke!

JOINen klappt zwar (gedanklich) schon aber mit den LEFTs und RIGHTs muss ich mich wohl noch ein bisschen befassen.

Die Idee von Renee ist auch nicht schlecht, aber wahrscheinlich ist die Lösung von pq performanter. Trotzdem danke!
Gruß
Hagen
murphy
 2009-01-30 14:21
#118530 #118530
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Hagen+2009-01-30 11:47:40--
[...]
JOINen klappt zwar (gedanklich) schon aber mit den LEFTs und RIGHTs muss ich mich wohl noch ein bisschen befassen.
[...]


Das kann man sich eigentlich ganz gut so merken: Wenn LEFT vor dem JOIN steht, dann sind die Spalten aus der linken Tabelle im Resultat immer mit Daten gefuellt waehrend die der rechten Tabelle auch NULL sein koennen. Fuer RIGHT sieht's natuerlich umgekehrt aus.
When C++ is your hammer, every problem looks like your thumb.
Hagen
 2009-01-30 16:35
#118535 #118535
User since
2007-09-06
233 Artikel
BenutzerIn
[default_avatar]
Es ist eher der Gebrauch bzw. die Übung :-) ... bisher brauchte ich sie noch nicht (oder habe es vielleicht zu umständlich gelöst)
Gruß
Hagen
<< >> 8 Einträge, 1 Seite



View all threads created 2009-01-29 13:46.