Frage von Plueschtier94, 26

MySQL, Join Abfrage - Bitte um Hilfe?

Hallo zusammen,

ich hab da eine kleine Frage. Ich habe folgende Abfrage

SELECT * FROM wordpress.wp_products wp_products 
JOIN wordpress.wp_kategorien wp_kategorien 
      ON (wp_products.ID = wp_kategorien.ID);

Habe auf der "Linken Seite" meine Artikel - Rechte Seite die Kategorien, perfekt zugeordnet.

In der Product Tabelle sind 50000 Einträge. In der Kategorie Tabelle sind 27000 Einträge.

Der SQL spuckt mir, die 27000 Einträge auch aus, allerdings hätte ich gerne alle 50.000.

Da wo die Bedingung, in dem Fall die "ID" nicht vorhanden ist, soll ein leeres Feld oder i-was anderes eingetragen werden.

Oder hat da jemand andere vorschläge die man probieren könnte?

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von KnusperPudding, 13

Bei einem normalen JOIN, bzw. INNER JOIN Werden nur Werte angezeigt, die in beiden Tabellen existente Werte haben.

Verwende einen LEFT JOIN um alle Werte aus product zu erhalten. Werte aus kategorien werden dann mit null dargestellt.

Kommentar von Plueschtier94 ,

Vielen Dank für die Antwort! - Ich stand da wohl auf dem Schlauch :D

Kurze Frage noch - Vielleicht kannst du mir da ja auch behilflich sein. 
Überprüfe ich den Wert mittels PHP dann auf nen leeren String?

Und ich habe in der kategorien tabelle einen Wert den ich dabei evtl ändern möchte. 
Anstatt "SALE-BIKINI-SET"
Hätte ich gerne "DAMEN-BIKINI-SET".

Ist das innerhalb der Abfrage auch realisierbar? Oder soll ich das später in PHP machen? 

Kommentar von KnusperPudding ,

Überprüfe ich den Wert mittels PHP dann auf nen leeren String?

Ich verwende kein PHP, daher bin ich mir nicht sicher welchen Wert zu dann tatsächlich erhälst. Ich vermute aber: null.

Anstatt "SALE-BIKINI-SET"
Hätte ich gerne "DAMEN-BIKINI-SET".

UPDATE ZIELTABELLE 
SET Zielfeld = 'Neuer Feldwert'
WHERE Quellfeld = 'Feldwert'

Einfaches UPDATE-Statement.
'Neuer Feldwert' <- Beispiel-String.

Ist das innerhalb der Abfrage auch realisierbar?

Du meinst wohl Update-Statements auf das mehrere Datensätze deines Ergebnisses? Ja. das ist möglich:

UPDATE ZIELTABELLE 
SET Zielfeld = 'Testwert'
FROM ZIELTABELLE
INNER JOIN ZIELTABELLE2
ON ZIELTABELLE.Schluessel = ZIELTABELLE2.FREMDSCHLUESSEL
Antwort
von Suboptimierer, 15

Du musst einen LEFT JOIN verwenden. Schreibe einfach "LEFT" vor "JOIN".

Kommentar von Plueschtier94 ,

Vielen Dank für die Antwort! - Ich stand da wohl auf dem Schlauch :D

Kommentar von Suboptimierer ,

Bitteschön!

Kommentar von Plueschtier94 ,

Kurze Frage noch - Vielleicht kannst du mir da ja auch behilflich sein. 
Überprüfe ich den Wert mittels PHP dann auf nen leeren String?

Und ich habe in der kategorien tabelle einen Wert den ich dabei evtl ändern möchte. 
Anstatt "SALE-BIKINI-SET"
Hätte ich gerne "DAMEN-BIKINI-SET".

Ist das innerhalb der Abfrage auch realisierbar? Oder soll ich das später in PHP machen? 

Kommentar von Suboptimierer ,

In PHP kannst du auf auf Leerstring abprüfen. In SQL wird zwischen Leerstring und NULL unterschieden. 

update kategorien set spalte = 'DAMEN-BIKINI-SET' where spalte = 'SALE-BIKINI-SET';
Antwort
von qwertz6561, 16

Meinst du einen FULL OUTER JOIN? Google mal danach und je nach Sprache heißt es bzw. ist die Syntax anders.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten