WinFuture-Forum.de: Daten Aus 2 Tabellen Ausgeben - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Daten Aus 2 Tabellen Ausgeben


#1 Mitglied ist offline   valeron 

  • Gruppe: aktive Mitglieder
  • Beiträge: 581
  • Beigetreten: 13. Oktober 05
  • Reputation: 0
  • Geschlecht:Männlich
  • Interessen:Computer

geschrieben 12. Juli 2006 - 08:58

Hi;
also:

ich baue eine suche die in einer tabelle (test) nach den suchwerten schaut,
un diese dann ausgibt, aber,
ich habe eine spalte ausgelagert in eine externe tabelle (OS),
bei meinem versuch beide tabellen zusammen auszugeben, wird aber jedes ergebniss 4 mal angezeigt:

Beispiel:

	
SELECT
t.ID, t.Kunde, t.Ansprechpartner, t.BusinessModell, t.Anfangsdatum, t.Requests, t.Orders, t.Staging, o.ID, o.OS
FROM
test t, os o
WHERE 
t.Kunde LIKE \"%\" \"$_POST[kunde]\" \"%\"
ORDER BY
t.Anfangsdatum ";


wodurch wird bei mir jedes ergebniss 4 mal angezeigt, und wie kann ich das beheben?
0

Anzeige



#2 Mitglied ist offline   muzikus69 

  • Gruppe: aktive Mitglieder
  • Beiträge: 22
  • Beigetreten: 01. Juni 05
  • Reputation: 0

geschrieben 12. Oktober 2006 - 14:06

Hallo valeron,

ich bin zwar jetzt kein 100%iger mySQLer, aber in Oracle würde man das
so formulieren:

SELECT
t.ID, t.Kunde, t.Ansprechpartner, t.BusinessModell, t.Anfangsdatum, t.Requests, t.Orders, t.Staging,
o.ID, o.OS
FROM
test t, os o
WHERE 
t.ID = o.ID AND t.Kunde LIKE \"%\" \"$_POST[kunde]\" \"%\"
ORDER BY
t.Anfangsdatum ";


Ich habe jetzt mal angenommen, dass es in der Tabelle o ebenfalls ein Feld "ID" gibt.

Du mußt also eine Referenz zwischen beiden Tabellen "t" und "o"herstellen.
Andernfalls gibt er Dir jeden gefundenen Wert in der Tabelle "t" und wiederholt das
nocheinmal für jeden gefundenen Datensatz aus der Tabelle "o".

Gruß
muZiKus69
0

#3 Mitglied ist offline   TO_Webmaster 

  • Gruppe: Moderation
  • Beiträge: 3.212
  • Beigetreten: 27. März 02
  • Reputation: 82
  • Geschlecht:Männlich

geschrieben 12. Oktober 2006 - 22:37

@valeron
Du hattest in deinem Query das Kreuzprodukt der beiden Tabellen gebildet, deswegen mehrere Ausgaben. Richtig sollte z.B. sein:

SELECT
t.ID, t.Kunde, t.Ansprechpartner, t.BusinessModell, t.Anfangsdatum, t.Requests, t.Orders, t.Staging, o.ID, o.OS
FROM test t LEFT JOIN os o ON t.ID = o.ID
WHERE t.Kunde LIKE %".$_POST['kunde']."%
ORDER BY t.Anfangsdatum;


Die Art des Joins hängt natürlich von den Gegebenheiten ab, evtl. ist auch ein Natural Join oder ein Natural Left Join sinnvoll. Ich denke aber, diese Lösung sollte dein Problem lösen. Allerdings solltest du das $_POST unbedingt vorher abfangen, damit dir niemand eine SQL-Injection schickt.

MfG TO_Webmaster
The old reverend Henry Ward Beecher
called a hen the most elegant creature.
The hen pleased for that,
laid an egg in his hat.
And so did the hen reward Beecher.
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0