List:German« Previous MessageNext Message »
From:Felix Ostmann Date:July 14 2003 2:19pm
Subject:RE: JOIN-Problem
View as plain text  
>
>
>> -----Original Message-----
>> From: Felix Ostmann [mailto:ostmann@stripped]
>> 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
>
>-- 
>Mit freundlichen Gruessen
>Dipl.-Ing. (FH) Mike Beck
>mike.beck@stripped
>Ingenieurbüro Miller
>
>-- 
>Deutsche MySQL Mailingliste
>Listenarchive: http://lists.mysql.com/mysql-de
>Abbestellen (unsubscribe): http://lists.mysql.com/mysql-de?unsub=1




fast bis zum ende richtig :)


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

so bekomme ich das, nur möchte ich, das für nicht gefundene werte kein NULL
rauskommt, sondern das die garnicht auftauchen. Weil so habe ich das Problem, das ich
folgendes rausbekomme:

artnr bezeichnung
1     Katz
NULL     NULL

ich hätte aber gerne 
artnr bezeichnung
1     Katz
2     Katz

weil die Werte von 2 und Katz überschrieben werden durch die zweite Tabelle. Was ich
ja genau nicht will :( Ich arbeite mit Perl & hashref, würde das Problem aber
gerne mySQL-Lastig besiegen :)


Thread
JOIN-ProblemFelix Ostmann14 Jul
  • RE: JOIN-ProblemDennis Sterzenbach14 Jul
RE: JOIN-ProblemMike Beck14 Jul
RE: JOIN-ProblemFelix Ostmann14 Jul
  • Re: JOIN-ProblemGeorg Richter14 Jul