Mailinglisten-Archive |
Hallo Sebastian, besten Dank für die Antwort. Folgendes ist dazu noch hinzuzufügen: Es gibt noch ein Kriterium das Feld finu(Firmennummer), dieses ist in allen Tabellen vorhanden und wird vorher bestimmt.(von 1 bis 5) 1. Abfrage für die Kundennummer SELECT kunu, name_01 FROM kd_polen_kunden WHERE finu=1 ORDER BY kunu 2. Nach auswahl einer Kundennummer z.B. 96020 geht es weiter SELECT auftr.kunu,auftr.modell, auftr.farbe, auftr.gr_bez, auftr.bez_text, pflege.text_1, tkg.text01, tkg.text02 FROM kd_polen_auftr_2032 as auftr, kd_polen_pflege_2032 as pflege, kd_polen_tkg_2032 as tkg WHERE auftr.kunu=96020 AND pflege.pflege=auftr.pflege AND tkg.tkg=auftr.tkg AND pflege.finu=1 AND tkg.finu=1 AND auftr.finu=1 Und so bekomme ich das gewünschte Ergebnis Kann man diesen Query natürlich vereinfachen? Mit freundlichen Grüßen Dirk -----Ursprüngliche Nachricht----- Von: Cybot [mailto:4t2.com-mysql at tekkno4u.de] Gesendet: Mittwoch, 2. Juli 2003 10:08 An: mysql-de at lists.4t2.com Betreff: Re: AW: Datenbank abfrage > 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 -- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive