 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
05.11.2002, 15:47
|
#1
|
|
TP-Veteran
Registriert seit: Jun 2001
Ort: Wien
|
Kleines Problem mit DISTINCT
Hallo!
Ich hab da ein kleines Problem! Ich möchte per SQL-Abfrage meine Tabelle abfragen und mir die Ergebnisse in einer Tabelle ausgeben lassen. Da in der Tabelle (beabsichtigt) mehrere fast Idente Datensätze sind soll mir nur immer ein Ergebnis pro Doppelten Datensatz ausgegeben werden. Bis jetzt hab ich das immer mit DISTINCT in der SQL-Abfrage geregelt was bis jetzt auch immer ganz gut funktioniert hat! Nur jetzt will es nicht mehr. Es werden mir alle Datensätze ausgegeben die halbwegs auf die Suchabfrage passen. Sprich alle doppelten Datensätze werden auch doppelt angezeigt.
Hier mal der SQL-String:
SELECT DISTINCT Produkt, Beschreibung, Preis FROM Preisvergleich WHERE Produkt LIKE '%$produkt%' ORDER BY Produkt ASC
Was is da falsch????
Danke im vorraus!
lg
Flow
__________________
Lesser known Programming Languages #13: SLOBOL
... Although many compilers allow you to take a coffee break while they compile, SLOBOL compilers allow you to travel to Bolivia to pick the coffee. Forty-three programmers are known to have died of boredom sitting at their terminals while waiting for a SLOBOL program to compile. Weary SLOBOL programmers often turn to a related (but infinitely faster) language, COCAINE.
|
|
|
05.11.2002, 16:08
|
#2
|
|
TP-Specialist
Registriert seit: Jan 2002
Ort: TP/Dynamik
|
hast wohl eine kleine varianz in irgend einer der spalten.
von der query her sehe ich keinen fehler.
__________________
Gehelft? Hier kannst du dich bedanken.
mike
|
|
|
05.11.2002, 16:15
|
#3
|
|
TP-Veteran
Registriert seit: Jun 2001
Ort: Wien
|
In der Spalte "produkt" sind die Namen die doppelt sind alle gleich! Kleine Unterschiede gibts in dern Spalten Beschreibung und Preis aber die sind ja für die Abfrage nicht wirklich wichtig!
Ich kapiers nicht! Hier noch der restliche Code der von bedeutung ist:
$ergebnis = mysql_query($sql, $verbindung);
while ($detail=mysql_fetch_array($ergebnis))
{
echo "<tr>\n<td class='td' align='left'>\n".$detail[0]."</td>\n";
echo "<td class='td' align='left'>\n".$detail[1]."</td>\n";
echo "<td class='td' align='center'>\n".$detail[2]."</td>\n</tr>\n";
}
Dazwischen kommt nur etwas HTML sonst nix!
lg
Flow 
__________________
Lesser known Programming Languages #13: SLOBOL
... Although many compilers allow you to take a coffee break while they compile, SLOBOL compilers allow you to travel to Bolivia to pick the coffee. Forty-three programmers are known to have died of boredom sitting at their terminals while waiting for a SLOBOL program to compile. Weary SLOBOL programmers often turn to a related (but infinitely faster) language, COCAINE.
|
|
|
05.11.2002, 16:25
|
#4
|
|
TP-Special Mod
Registriert seit: Jun 2001
Ort: 8°21' O 49°1' N
|
Bin net ganz so fit in SQL, aber wirkt das DISTINCT bei
SELECT DISTINCT Produkt, Beschreibung, Preis FROM Preisvergleich WHERE Produkt LIKE '%$produkt%' ORDER BY Produkt ASC
nicht auf den kompletten Select-Bereich? Soll heissen, auf Produkt,Beschreibung,Preis?
|
|
|
05.11.2002, 16:32
|
#5
|
|
TP-Veteran
Registriert seit: Jun 2001
Ort: Wien
|
Gut möglich!
Heee! Das kann natürlich sein! Da ich aber auch nicht der Guru in SQL bin bräuchte ich jetzt nur ne möglichkeit wie ich's anders schreiben kann damit mir das gewünschte Ergebnis raus kommt??!!??
lg
Flow
__________________
Lesser known Programming Languages #13: SLOBOL
... Although many compilers allow you to take a coffee break while they compile, SLOBOL compilers allow you to travel to Bolivia to pick the coffee. Forty-three programmers are known to have died of boredom sitting at their terminals while waiting for a SLOBOL program to compile. Weary SLOBOL programmers often turn to a related (but infinitely faster) language, COCAINE.
|
|
|
05.11.2002, 16:39
|
#6
|
|
TP-Special Mod
Registriert seit: Jun 2001
Ort: 8°21' O 49°1' N
|
Ähhhm...grübel... möööööglicherweise hilft ein group by Produkt am Ende des Statements... bin mir aber nicht sicher. Probiers halt mal
EDIT
na, wenn's 2 vorschlagen, dürfte ja was dran sein...
Geändert von webmichl (05.11.2002 um 16:45 Uhr).
|
|
|
05.11.2002, 16:39
|
#7
|
|
TP-Moderator
Registriert seit: Nov 2002
Ort: Hamburg
|
SELECT DISTINCT Produkt, Beschreibung, Preis FROM Preisvergleich WHERE Produkt LIKE '%$produkt%' ORDER BY Produkt ASC
das destinct wirkt sich nur auf Produkt aus. das ist schon richtig. hast du es mal mit goup probiert??
SELECT DISTINCT Produkt, Beschreibung, Preis FROM Preisvergleich WHERE Produkt LIKE '%$produkt%' group by Produkt ORDER BY Produkt ASC
|
|
|
05.11.2002, 16:47
|
#8
|
|
TP-Veteran
Registriert seit: Jun 2001
Ort: Wien
|
Leute ihr seit's genial! Es funktioniert! Auf's Group By wär ich jetzt lang nicht gekommen!
Ihr seits Super!
Danke!
lg
Flow
__________________
Lesser known Programming Languages #13: SLOBOL
... Although many compilers allow you to take a coffee break while they compile, SLOBOL compilers allow you to travel to Bolivia to pick the coffee. Forty-three programmers are known to have died of boredom sitting at their terminals while waiting for a SLOBOL program to compile. Weary SLOBOL programmers often turn to a related (but infinitely faster) language, COCAINE.
|
|
|
05.11.2002, 17:02
|
#9
|
|
TP-Specialist
Registriert seit: Jan 2002
Ort: TP/Dynamik
|
Zitat:
|
SELECT DISTINCT Produkt, Beschreibung, Preis FROM Preisvergleich WHERE Produkt LIKE '%$produkt%' ORDER BY Produkt ASC
|
und das geht?
ich bin immer wieder fasziniert welch 'perversitäten' mysql zulässt 
__________________
Gehelft? Hier kannst du dich bedanken.
mike
|
|
|
05.11.2002, 18:40
|
#10
|
|
TP-Moderator
Registriert seit: Nov 2002
Ort: Hamburg
|
Zitat:
und das geht?
ich bin immer wieder fasziniert welch 'perversitäten' mysql zulässt
|
wieso nicht???
|
|
|
05.11.2002, 18:55
|
#11
|
|
TP-Specialist
Registriert seit: Jan 2002
Ort: TP/Dynamik
|
weil dir bei einer 'echten' datenbank das sql um die ohren fliegt.
distinct macht ein group by auf sämtliche select felder, gut.
deshalb hat sein erster ansatz ja auch nicht funktioniert.
group by lässt dir das sortierte gruppieren besser steuern (desc, asc)
jedoch müssen sämtliche im select angeführten felder in einer aggragat funktion eingebettet sein, sofern sie nicht im group by angeführt sind (count, min, max,...)
mysql macht scheinbar ein implizites max auf sämtliche nicht im group by angeführten felder.
also wenn du nicht den max-wert beim preis angeführt haben willst, sondern z.b. den kleinsten preis, dann müsste die query entsprechend umgebaut werden.
o.t. @DracheTe:
du bist heut den ersten tag da, und ich hab das gefühl, dass sich hier ein sehr kompetenter user im dynamic niedergelassen hat.
auch dein portfolio auf deiner hp zeugt davon, dass hier das 'newbie' nicht wirklich stimmt 
freu mich schon den einen oder anderen mysql-trick von dir zu lernen, da ich selber eher in sachen standard-sql unterwegs bin.
drum bin ich immer wieder verwundert, was für sachen man mit der datenbank anstellen kann...
in diesem sinne - warm welcome von meiner seite 
__________________
Gehelft? Hier kannst du dich bedanken.
mike
|
|
|
05.11.2002, 19:24
|
#12
|
|
TP-Moderator
Registriert seit: Nov 2002
Ort: Hamburg
|
Zitat:
weil dir bei einer 'echten' datenbank das sql um die ohren fliegt.
distinct macht ein group by auf sämtliche select felder, gut.
deshalb hat sein erster ansatz ja auch nicht funktioniert.
group by lässt dir das sortierte gruppieren besser steuern (desc, asc)
jedoch müssen sämtliche im select angeführten felder in einer aggragat funktion eingebettet sein, sofern sie nicht im group by angeführt sind (count, min, max,...)
mysql macht scheinbar ein implizites max auf sämtliche nicht im group by angeführten felder.
also wenn du nicht den max-wert beim preis angeführt haben willst, sondern z.b. den kleinsten preis, dann müsste die query entsprechend umgebaut werden.
|
das ist richtig. distinct filtert "eigentlich" nur einen wert aus einer spalte.
group by hingegen "manscht" alle einträge, die hier gleich sind, zu einem datensatz zusammen. wenn man ein preis herausbekommen möchte, müsste man bei mysql die von dir gewünschten werte einfügen, zum beispiel
MAX(Preis) as maxpreis, MIN(Preis) as minpreis
um beide werte zu bekommen.
Zitat:
o.t. @DracheTe:
du bist heut den ersten tag da, und ich hab das gefühl, dass sich hier ein sehr kompetenter user im dynamic niedergelassen hat.
auch dein portfolio auf deiner hp zeugt davon, dass hier das 'newbie' nicht wirklich stimmt 
freu mich schon den einen oder anderen mysql-trick von dir zu lernen, da ich selber eher in sachen standard-sql unterwegs bin.
drum bin ich immer wieder verwundert, was für sachen man mit der datenbank anstellen kann...
in diesem sinne - warm welcome von meiner seite [/b]
|
DANKE, ich nehme das mal als kompliment ;o)
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 23:39 Uhr.
|
 |