Alt 06.08.2008, 15:32:33   #1
paddya
Erfahrener Benutzer

ID: 296438
Lose senden

paddya eine Nachricht über ICQ schicken paddya eine Nachricht über MSN schicken
Reg: 04.09.2007
Beiträge: 529
Standard [MySQL] Tabelle zum JOIN anhand eines Wertes auswählen

Guten Tag,

ich habe mal wieder eine Frage an die Experten hier.

Momentan nutze ich für die Angebote eines Marktplatzes zwei Tabellen, da es zwei Arten von "Waren" gibt, die verkauft werden können. Die Waren stehen dabei nichti in einer Tabelle, sondern sind ebenfalls aufgesplittet.
Momentan sieht das also so aus:
Code:
1:
2:
3:
4:
5:
Markplatz für Ware A Marktplatz für Ware B | INNER | INNER | JOIN | JOIN \_/ \_/ Tbl. in der W. A hinterlegt ist Tbl. in der W. B hinterlegt ist
Nun möchte ich die beiden Marktplatz-Tabellen gerne zusammenführen und in einer zusätzlichen Spalte die Art der Ware angeben um anhand dieser auf die richtige Waren-Tabelle zu joinen.

Die Frage ist, wie ich das mache. Vor allem muss von der Warentabelle nochmal auf eine andere Tabelle gejoint werden. Das ganze könnte also etwas komplexer ausfallen. Bietet MySQL Mittel oder Wege, eine Tabelle nur unter einer bestimmten Bedingung zu joinen?

Mein erster Ansatz war, zunächst einmal beide Warentabellen zu joinen und die richtigen Werte anhand der `type`-Spalte auszuwählen.

Code:
1:
SELECT o.id IF(u.type = 'a', a.name, b.name) AS object_name FROM offers AS o LEFT JOIN ware_a AS a ON o.offer_object = a.id LEFT JOIN ware_b ON o.offer_object = b.id
Allerdings kann ich mir vorstellen, dass das nicht sonderlich performant und elegant ist.

Gibt es bessere Lösungen oder sollte ich besser bei meinen zwei Tabellen bleiben?

Danke schon mal im Vorraus,
paddya

(Ich hoffe, ich habe mich verständlich ausgedrückt .)
 
paddya ist offline   Mit Zitat antworten
Alt 06.08.2008, 15:44:21   #2
theHacker
sieht vor lauter Ads
den Content nicht mehr
Benutzerbild von theHacker

ID: 69505
Lose senden

theHacker eine Nachricht über ICQ schicken theHacker eine Nachricht über Skype™ schicken
Reg: 20.04.2006
Beiträge: 22.689
Standard

Ich hoffe, ich hab das richtige verstanden

Ein JOIN ist immer an eine Bedingung geknüpft, nämlich die Bedingung unter welcher zwei Tupel von zwei verschiedenen Tabellen verknüpft werden.

Nehmen wir also an, du hast deine beiden Marktplätze nun in einer Tabelle drin. Nun willst du irgendeine Tabelle mit diesem Marktplatz joinen, aber nur die Waren vom Typ A nehmen. Du hängst beim JOIN einfach die Bedingung dran, dass du eben nur Waren vom Typ A haben willst.

Früher hattes du
Code:
1:
2:
3:
SELECT other.something, market_a.article_id FROM market_a JOIN other ON market_a.article_id = other.article_id
Nun legst du beim JOIN schon fest, dass du nur Waren vom Typ A haben willst, also
Code:
1:
2:
3:
SELECT other.something, market.article_id FROM market JOIN other ON market.type = 'a' AND market.article_id = other.article_id
theHacker ist offline   Mit Zitat antworten
Alt 06.08.2008, 15:56:27   #3
paddya
Erfahrener Benutzer

ID: 296438
Lose senden

paddya eine Nachricht über ICQ schicken paddya eine Nachricht über MSN schicken
Reg: 04.09.2007
Beiträge: 529
Standard

Edit: Jetzt wirds mir klar... danke theHacker Ich will ja gar nicht beides gleichzeitig...

Warum einfach, wenns auch kompliziert geht

Greetz

paddya
 
paddya ist offline Threadstarter   Mit Zitat antworten
Antwort

Anzeige


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[MySQL] Überprüfe ob Wert aus Tabelle A in Tabelle B steht M3Y3R Programmierung 9 19.02.2008 15:42:40
[MySQL] Join nur für höchste ID einer Tabelle flaschenkind Programmierung 4 25.10.2007 14:50:14
[PHP/MYSQL] Tage anhand 2 Datumsangaben errechnen TIMM3 Programmierung 8 23.01.2007 18:28:03
[SQL] Eine Bestimmte Tabelle auswählen resoucer Programmierung 6 07.01.2007 15:55:36
[PHP/MySQL] Tables zusammenfügen? - Zufälligen Datensatz auswählen... wittis-web.de Programmierung 21 29.04.2006 14:23:11


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:51:41 Uhr.