Announcement

Collapse
No announcement yet.

Frage zu: Mehrere Werte aus einer Tabelle vergleichen und bei übereinstimmung statt der Vergleichsfelder der anderen Tabelle anzeigen.

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Frage zu: Mehrere Werte aus einer Tabelle vergleichen und bei übereinstimmung statt der Vergleichsfelder der anderen Tabelle anzeigen.

    Hallo,<br>
    <br>
    Habe eine weitere Frage. In einem Select habe ich mehrere Werte, die ich in einer anderen Tabelle vergleichen möchte und bei übereinstimmung die Werte aus der anderen Tabelle anzeigen. Sorry, wenn ich das so kompliziert umschreibe. Aber ich krigs einfach nicht hin! Hier ist meine Abfrage, wie sie leider nicht funktioniert;

    SELECT
    Tablle1.GESTTYP,
    Tabelle1.GESTNR,
    Tabelle1.GESTART,
    Tabelle2.KCBES,
    Tabelle1.GESTUART
    Tabelle2.KCBES
    FROM
    Tabelle1,
    Tabelle2,
    WHERE
    Tabelle1.GESTART=Tabelle2.KCKEYC AND
    Tabelle1.GESTUART=Tabelle2.KCKEYC

    Das Problem liegt darin, dass ich jeweils den Wert in KCKEYC aus der gleichen Tabelle für zwei verschiedene Werte aus der anderen Tabelle anzeigen lassen möchte.

    Wäre klasse, wenn mir jemand helfen würde.

    Gruß,
    Marco

  • #2
    Hi, <br>
    vom Prinzip evtl. so (Müßte natürlich an Deine Tabellenstruktur angepasst werden):<br><br>
    SELECT *
    FROM tab1
    WHERE tab1.field1 in (SELECT tab2.field1 from tab2)
    <br>oder<br>
    SELECT *
    FROM tab1
    WHERE tab1.field1 in (SELECT tab2.field1 FROM tab2) AND
    tab1.field2 in (SELECT tab2.field2 FROM tab2)
    <br><br>
    Der Unterschied zwischen "meinem" Subselect und "Deinem" Inner Join ist wie folgt:<br>
    Tab1:<br>
    001<br>
    002<br>
    003<br>
    004<br>
    005<br>
    Tab2:<br>
    001<br>
    001<br>
    003<br>
    003<br>
    003<br><br>
    Beim Subselect werden folgende Sätze angezeigt: 001, 003<br><br>
    Beim Inner Join werden folgende Sätze angezeigt: 001, 001, 003, 003, 003<br><br>
    Ich hoffe, Du verstehst meine etwas komplizierte Erklärung ;-)
    <br><br>
    Gruß Fran

    Comment


    • #3
      Da fällt mir noch was ein. Du kannst auch ein DISTINCT nehmen. <br><br>
      SELECT DISTINCT tab1.field1, tab1.field2, tab2.field1
      FROM tab1, tab2
      WHERE tab1.field1 = tab2.field1<br><br>
      DISTINCT filtert alle alle doppelten Sätze in der Ergebnisstabelle heraus.<br><br>
      Was perfomanter ist, kann ich Dir nicht sagen. Vom Gefühl her würd ich sagen der Inner Join mit Distinct. Aber schöner finde ich irgendwie das SubSelect.<br><br>
      Aber das ist Geschmackssache ;-

      Comment


      • #4
        Vielen Dank für Deine Hilfe!!!
        Werde es gleich mal testen.
        <bR><br>Gruß,<br>Marc

        Comment

        Working...
        X