phpbar.de logo

Mailinglisten-Archive

Re: mein Script verschluckt nun nichts mehr
Archiv Mailingliste mysql-de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: mein Script verschluckt nun nichts mehr



Hallo,

was soll denn das privat an mich??

> Hoi Thomas,

> Kleine Bitte vorweg: Poste Antworten auf Listenmails auch immer in die
> Liste, es sei denn, es ist offtopic.

>> Hallo Jens,

> Jan. Aber das macht auch nichts :)

>> warum es do{} while sein muss.

> Ganz einfach: Du hast mit deiner Abfrage eine Struktur erzeugt, die so
> viele Zeilen wie Angebote hat (1 Anbieter gekreuzt mit n Angeboten macht
> 1 * n = n Zeilen). In den ersten Spalten steht jeweils das Angebot, in
> den hinteren Spalten der Anbieter, der ja in jeder Zeile gleich ist.

> Mit dem ersten Fetch liest du die erste Zeile ein. Du erhaelst eine
> Zeile, die hinten den Anbieter enthaelt (das tun ja alle), aber vorne
> bereits das erste Angebot! Wenn du jetzt in die Angebotsschleife
> eintrittst, dann darfst du nicht nochmal einen Fetch machen, denn sonst
> erhaelst du die 2. Zeile! Der Fetch darf erst HINTERHER erfolgen. Deshalb
> do {} while.

>> Warum steht die kundenliste so sehr von der angeboteliste in
>> Abhaengigkeit. Muss die Abfrage vielleicht noch anders aussehen?

> Das zweite Problem ist direkt mit dem ersten verknuepft: Wenn dein
> Anbieter noch kein Angebot hat, dann kriegst du mit deiner Abfrage 0
> Datensaetze! Warum? Weil 1 Anbieter mit 0 Angeboten ergibt 1 * 0 = 0
> Datensaetze!

> Du musst dir erst mal klar werden, was so eine Abfrage ueberhaupt macht.
> Ich habe am 13.9. unter dem Thema "Re: Select-Alternative" eine Mail
> gepostet, die die grundlegenden Eigenschaften von Abfragen mit
> Verknuepfungen, sogenannten JOINS, erklaert. Such sie und lies sie dir
> durch.

> Dein Problem liesse sich nun auf zweierlei Weise loesen:
> Entweder du machst statt dem INNER JOIN (durch das Komma zwischen den
> Tabellen festgelegt) einen Anbieter LEFT JOIN Angebote, dann liefert die
> Datenbank auch Eintraege fuer Anbieter zurueck, die noch kein Angebot
> haben. Allerdings musst du dann beim Eintritt in die do {} while
> -Schleife abchecken, ob ueberhaupt ein Angebot vorliegt.

> Logischer, sinnvoller und performanter waere es, die beiden Abfragen zu
> trennen. Frag zuerst den Anbieter ab, danach die Angebote mit WHERE
> anbieter_id=$anbieter.

> Gruss Jan

> --

>> Hallo Jens,
>>
>> bei den Schleifen wird mir noch ganz schwindelig. Da muss ich aber
>> noch mal nachlesen, warum es do{} while sein muss. Aber super,
>> dass das geklappt hat.
>> Eine kleine Falle hast du mir aber noch bei deiner Loesung
>> eingebaut. Du hast das ; ausgelassen :-)  Ist mir direkt
>> aufgefallen, weil ich wegen eines fehlenden Semikolons schon mal
>> einen halben Tag vor einem Script gesessen habe. Nun bin ich
>> sensibilisiert fuer semis :-)
>>
>> Kannst du mir vielleicht sagen, warum nun aber Leute, die noch
>> keinen Eintrag vorgenommen haben, sich nicht einloggen koennen?
>> Warum steht die kundenliste so sehr von der angeboteliste in
>> Abhaengigkeit. Muss die Abfrage vielleicht noch anders aussehen?
>> Wenn ja, werde ich mal dort suchen.
>>
>> Danke und Gruss,
>>
>> Thomas Barth...

> ---
> *** Weitere Infos zur Mailingliste und MySQL unter www.4t2.com/mysql



---
*** Weitere Infos zur Mailingliste und MySQL unter www.4t2.com/mysql 


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive