5 messages in com.mysql.lists.mysql-deRE: JOIN-Problem
FromSent OnAttachments
Felix Ostmann14 Jul 2003 06:31 
Dennis Sterzenbach14 Jul 2003 06:55 
Beck, Mike14 Jul 2003 07:09 
Felix Ostmann14 Jul 2003 07:18 
Georg Richter14 Jul 2003 10:37 
Subject:RE: JOIN-Problem
From:Beck, Mike (mike@ibmiller.de)
Date:07/14/2003 07:09:09 AM
List:com.mysql.lists.mysql-de

-----Original Message----- From: Felix Ostmann [mailto:ostm@os3.com] Sent: Monday, July 14, 2003 3:32 PM To: MySQL-Mailingliste dt. Subject: JOIN-Problem

<snip>

Sprich wir haben zwei Tabellen die über USING(artikelnr) verbunden sind und es gibt keinen passenden Eintrag in der zweiten Tabelle, dann wird im Ergebnis artikelnr als NULL zurückgegeben. Es gibt zwar verschiedene Varianten das zu unterbinden indem man explizit die Feldnamen angibt der zweiten Tabelle oder mit einem array arbeitet, aber wir suchen halt irgendwie nach der Möglichkeit weiter mit hashref arbeiten zu können ohne explizit alle Tabellenfelder angeben zu müssen (wenn es 300 sind z.b. dürfe es nicht wirklich effektiv sein wenn man alle haben will). Also wir suchen sowas wie: fülle mir die erste Tabelle mit den Daten aus der zweiten Tabelle auf sofern Daten aus der zweiten Tabelle vorhanden sind.

Bin mir noch nicht ganz sicher, ob ich Dich recht verstehe meinst Du das:

tabelle1 artnr bezeichnung 1 Hund 2 Katz

tabelle2 artnr bezeichnung 1 Katz

machst Du: SELECT tabelle1.*,tabelle2.* FROM tabelle 1 LEFT JOIN tabelle2 ON tabelle1.artnr = tabelle2.artnr

kriegst Du das:

tabelle1.artnr tabelle1.bezeichnung tabelle2.artnr tabelle2.bezeichnung 1 Hund 1 Katz 2 Katz NULL NULL

und Du willst stattdessen:

artnr bezeichnung 1 Katz 2 Katz

??? Kann noch nicht verstehen unter welchen Umständen das Sinn machen kann, aber die einzige Möglichkeit die mir einfällt um das zu erreichen (ausser dem erstellen einer temporären Tabelle - darüber sollte man natürlich bei sowas nachdenken, wenn man mehr lesende als schreibende Zugriffe hat)

SELECT IFNULL(tabelle1.artnr,tabelle2.artnr) as Artikel, IFNULL(tabelle1.bezeichnung,tabelle2.bezeichnung) as Bez FROM tabelle 1 LEFT JOIN tabelle2 ON tabelle1.artnr = tabelle2.artnr