phpbar.de logo

Mailinglisten-Archive

AW: Datenbank abfrage

AW: Datenbank abfrage

Cybot 4t2.com-mysql at tekkno4u.de
Mit Jul 2 11:06:04 CEST 2003


> Es ist im Moment schwer das richtig zu erklären, aber es ist folgendermaßen:
> Ich benötige Angaben von den Kunden aus der Tabelle Auftrag mit der
> Kundennummer X
> (diese habe ich schon aus der Kundentabelle)
> Der Kunde hat nun mehrere Datensätze z.B. mit Farbe rot, grün u.s.w.
> In jedem dieser Datensätze steht auch eine text1nr.
> Diese steht auch in der Tabelle text1,(In dieser sind alle verschiedenen
> text1nr gespeichert und eindeutig)
> ich benötige die dazu gehörigende Beschreibung.
> Bei der Tabelle text2 verhält sich das ebenso.
> 
> Mit dem Query Count hast du recht, es sind in der Tabelle Auftrag 332 mal
> diese Kundennummer.
> 
> Wenn ich nun bei jeder Kundennummer nachfrage welche Beschreibung es in der
> Tabelle text1 gibt die die
> selbe text1nr, so darf es doch am Ende nur 332 Datensätze geben.
> 
> Aber wie geht es mit einem Query?
> 
>>Ich habe vorerst 3 Tabellen
>>Auftr, text1, text2
>>
>>In Auftrag die Felder
>>            kunu
>>            modell
>>            farbe
>>            text1nr
>>            text2nr
>>
>>In text1 die Felder
>>            text1nr
>>            beschreib
>>
>>In text2 die Felder
>>            text2nr
>>            text01
>>            text02
>>
>>nun möchte ich folgende Liste erhalten für eine kunu
>>  kunu, modell, farbe, beschreib, text01, text02
>>
>>in der Tabelle Auftr stehen die kunu mehrfach drin
>>
>>Meine Idee war folgende:
>>
>>SELECT 1.kunu, 1.modell, 1.farbe, 2.beschreibung, 3.text01, 3.text02
>>FROM Auftrag AS 1, text1 as 2, text2 as 3
>>WHERE 1.kunu=96020 AND 2.text1nr=1.text1nr AND 3.text2nr=1.text2nr
>>
>>Nun bekomme ich 1580 Datensätze angezeigt obwohl es nur 332
> 
> 
> mhmh, die frage ist was passt dir denn an den 1580 ergebnissn nicht? 
> denn das query an sich ist richtig, wohl nur nicht richtig in hinblick 
> darauf was du haben möchtest
> 
> mit 322 meinst du wohl die anzhal der datensätze in 'Auftrag' mit der 
> Kundennummer 96020 ?
> 
> also (SELECT COUNT(*) FROM `Auftrag` WHERE `kunu` = 96020) = 332 ?
> 
> wenn das der fall ist dann stimmt wohl was an deiner zuordnung zwichen 
> 'Artikel' und 'text1' und 'text2' nicht
> 
> eventuell ist die 'text1'.'text1nr' oder die 'text2'.'text2nr' nicht 
> eindeutig ???

also wenn 'text1'.'text1nr' und 'text2'.'text2nr' unique sind dann 
sollte ein

SELECT *
FROM `Auftrag`
  LEFT JOIN `text1` USING (`text1nr`)
  LEFT JOIN `text2` USING (`text2nr`)
WHERE `Auftrag`.`kunu` = 96020

genauso viele ergebnisse bringen wie ein

SELECT * FROM `Auftrag` WHERE `kunu` = 96020

leider hab ich auf die ferne auch keine idee was du machen könntest wenn 
das nicht der fall ist, außer du schaffst es ein dump mit wenigen 
datensäten zu erzeugen wo dieser umstand auch auftritt und schickst ihn mit

-- 
Sebastian Mendel

www.sebastianmendel.de
www.tekkno4u.de
www.nofetish.com

-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive