WHERE Verknüpfung

Dieses Thema im Forum "SQL und Datenbanken" wurde erstellt von Getzi, 15.04.2005.

  1. Getzi

    Getzi Grünschnabel

    Dabei seit:
    23.08.2004
    Beiträge:
    4
    Zustimmungen:
    0
    Hallo Leute,
    hat vll jemand von euch schonmal ne Präzi zum Thema Tabellenverknüpfung mit der WHERE Bedingung gemacht. Also die das Prinzip und die vorgehensweise erklärt. Mein Lehrer hat mir nämlich so etwas unter dem Thema "Schüler schulen Schüler" aufgedrückt. Ich soll den neuen das auf eine vll spielerische, aber verständliche Art und Weise beibringen und ich weiß nicht wie ?( .... Also wenn Ihr mir irgendwie helfen könnt, wäre ich euch sehr dankbar ;)
    MfG
    Getzi
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 lordlamer, 15.04.2005
    lordlamer

    lordlamer Haudegen

    Dabei seit:
    15.05.2003
    Beiträge:
    703
    Zustimmungen:
    0
    Ort:
    hamburg
    naja im prinzip verknüpfst du ja die tabellen so mit select:

    select felder FROM tabelle1 as t1, tabelle2 as t2 WHERE t1.id = t2.fid;

    t1.id ist der primärschlüssel und t2.fid is der fremdschlüssel


    nun kannst du das so erklären das du zb 2 exceltabellen nebeneinander hälst und schaust wo die felder der beiden tabellen gleich sind. und wenn die felder gleich sind wird halt der datensatz ausgegeben ;) *G*

    man kann es ja auch mit mutter und kinder erklären. eine mutter kann n kinder haben. aber ein kind halt nur eine mutter. dann gibts ne tabelle mutter und ne tabelle kinder. ;) *G*

    oder mit musiktiteln von künstlern. der fantasie sind keine grenzen gesetzt.

    mfg frank
     
  4. #3 hehejo, 15.04.2005
    Zuletzt bearbeitet: 15.04.2005
    hehejo

    hehejo blöder Purist

    Dabei seit:
    12.10.2003
    Beiträge:
    1.280
    Zustimmungen:
    0
    Ort:
    Stein (Mittelfranken)
    UUU das ist aber nicht so toll:
    WHERE macht nur eine Datensatzauswahl.

    Nimm lieber einen JOIN
    Code:
    SELCET felder FROM Tabelle1 
    INNER JOIN Tabelle2 on Tabelle2.Personal_Nr = Tabelle1.Personal_ID
    WHERE Nachname LIKE 'M???er';
    
    Hier sieht du es noch mal schön: Die Tabellen werden mit JOIN verknüpft und mit WHERE machst du dann eine Datensatzauswahl.

    Damit du den Unterschied erkennst:
    Feuer mal diese beiden Statements ab und schau die die Results an:
    Code:
    select felder FROM tabelle1 tabell,e2; 
    SELCET felder FROM Tabelle1 
    INNER JOIN Tabelle2 on Tabelle2.Personal_Nr = Tabelle1.Personal_ID
    
    Beim ersten Statement bildet die Datenbank das Kreuzprodukt. D.h. jede Zeile aus Tabelle1 wird mit jedem Feld aus Tabelle2 verbunden und angezeigt. Aus diesem riesen Resultset nimmst du dir dann mit WHERE die richtigen raus.
    Mit dem zweiten Statement sagt du aber gleich der Datenbank, dass du nur die Zeilenkombinationen als Resultset haben möchtest in welchen die Bedingung nach "on" zutrifft. ->> viel besser.

    Gute Datenbanksysteme sollten eigentlich aus dem WHERE einen JOIN formen können.

    Nimm lieber JOINS! Auch wenn die die Verknüpfung per Datensatzauswahl (WHERE) einfacher erscheint: Joins sind übersichtlicher und du kannst die Verknüpfung bestimmen!

    //edit
    Hab vorhin nur den SELECT überflogen und da hat's mich gerissen!
    Nimm meinen SELECT und die Erklärung vom Vordermann. Das ist dann richtig erklärt!
     
  5. #4 TenBaseT, 16.04.2005
    TenBaseT

    TenBaseT Foren As

    Dabei seit:
    07.11.2004
    Beiträge:
    99
    Zustimmungen:
    0
    Hää? Wieso ist FROM Tabelle, Tabelle2 WHERE Tabelle2.Personal_Nr = Tabelle1.Personal_ID kein inner join? Ich sehe da keinen Unterschied (ausser in der Schreibwiese)

    Hans
     
  6. MadJoe

    MadJoe Eroberer

    Dabei seit:
    14.03.2005
    Beiträge:
    66
    Zustimmungen:
    0
    der unterschied ist, dass ohne INNER JOIN zuerst ein gesamtes kreuzprodukt mit allen möglichen kombinationen gebildet wird und erst dann die überflüssigen zeilen mit der where bedingung entfernt werden. theoretisch kann das mehr rechenzeit und mehr ramspeicher am dbms server fordern. nur sollten, wie glaub ich im laufe dieses threads schon erwähnt, gute server diese queries intern automatisch in "bessere queries" umformen, bevor sie ausgeführt werden, wodurch das meistens nicht auffällt. aber abgesehen davon, ist die schreibweise wirklich um einiges übersichtlicher mit der JOIN syntax.
     
  7. Getzi

    Getzi Grünschnabel

    Dabei seit:
    23.08.2004
    Beiträge:
    4
    Zustimmungen:
    0
    @lordlamer
    Kannst du mir das Beispiel mit der Mutter und den Kindern mal näher erklären, da ich diesen Vorschlag sehr interessant finde und ihn auch vll verwenden werde ;)
    Kannst dazu sonst auch noch ein Beispiel machen ... ^^
    Danke im voraus
    MfG
    Getzi
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  9. #7 TenBaseT, 19.04.2005
    TenBaseT

    TenBaseT Foren As

    Dabei seit:
    07.11.2004
    Beiträge:
    99
    Zustimmungen:
    0
    @MadJoe

    Jo, hast recht. Das kommt davon, wenn man alles in Self Study macht :rtfm: Komme gerade heute von ner Schulung und die haben mir genau das gleiche erzählt :think:

    Hans
     
  10. MadJoe

    MadJoe Eroberer

    Dabei seit:
    14.03.2005
    Beiträge:
    66
    Zustimmungen:
    0
    @TenBaseT

    wieso das? datenbankmäßig hab ich auch alles in "self study" gemacht, eigentlich fast alles was ich weiss, kompetente lehrer findet man ja eh selten. hatte aber auch das glück oracle original unterlagen zu verfügung zu haben, wie ich mit sql angefangen habe, naja oracle kennt aber JOINs in der form glaub ich gar nicht, bin aber nicht am neuesten stand, da sich die meisten firmen und schulen dann doch kein oracle leisten können :))

    joe
     
Thema:

WHERE Verknüpfung

Die Seite wird geladen...

WHERE Verknüpfung - Ähnliche Themen

  1. Squid als RPCoHTTPS Proxy für Outlook Anywhere

    Squid als RPCoHTTPS Proxy für Outlook Anywhere: Hallo Community, ich habe bereits versucht in einem anderen Forum Hilfe zu finden leider ohne Erfolg, darum versuche ich nochmal hier mein...
  2. MySQL: Wert durch WHERE-Fund ersetzen

    MySQL: Wert durch WHERE-Fund ersetzen: Hi, derzeit habe ich wo Namen gespeichert, wo eigentlich eine ID stehen sollte. tabelle1{name1,name2} tabelle2{id, name} Pseudo-SQL...
  3. »Where .com meets .org«: Der Business- und Behördenkongress auf dem LinuxTag 2009

    »Where .com meets .org«: Der Business- und Behördenkongress auf dem LinuxTag 2009: Um den praktischen Einsatz quelloffener Software in Unternehmen und öffentlichen Verwaltungen geht es auf dem Business- und Behördenkongress, der...
  4. where Klausel?

    where Klausel?: Hallo allerseits, ich habe eine Tabelle, die diesen Inhalt hat: ---------- id | fa | modell | komponente 1, s&m, 1 , x, 2, s&m, 1, y,...
  5. where 'devid' is either PCIID or USBID

    where 'devid' is either PCIID or USBID: Hallo ich hab einen T-Sinus 154 USB Stick (Achtung keinen T-Sinus 154 Data :oldman ). So nun ist es natürlich klar das die Hersteller keinen...