TP Underground Lounge 07/08
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 05.11.2002, 15:47   #1
TP-Veteran
 
Benutzerbild von Flow09
 
Registriert seit: Jun 2001
Ort: Wien
Flow09 ist auf einem guten Weg
Unhappy

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.
Flow09 ist offline   Mit Zitat antworten


Alt 05.11.2002, 16:08   #2
TP-Specialist
 
Benutzerbild von mike
 
Registriert seit: Jan 2002
Ort: TP/Dynamik
mike bringt sich richtig ein
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
mike ist offline   Mit Zitat antworten
Alt 05.11.2002, 16:15   #3
TP-Veteran
 
Benutzerbild von Flow09
 
Registriert seit: Jun 2001
Ort: Wien
Flow09 ist auf einem guten Weg
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.
Flow09 ist offline   Mit Zitat antworten
Alt 05.11.2002, 16:25   #4
TP-Special Mod
 
Benutzerbild von webmichl
 
Registriert seit: Jun 2001
Ort: 8°21' O 49°1' N
webmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine User
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?
webmichl ist offline   Mit Zitat antworten
Alt 05.11.2002, 16:32   #5
TP-Veteran
 
Benutzerbild von Flow09
 
Registriert seit: Jun 2001
Ort: Wien
Flow09 ist auf einem guten Weg

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.
Flow09 ist offline   Mit Zitat antworten
Alt 05.11.2002, 16:39   #6
TP-Special Mod
 
Benutzerbild von webmichl
 
Registriert seit: Jun 2001
Ort: 8°21' O 49°1' N
webmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine User
Ä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).
webmichl ist offline   Mit Zitat antworten
Alt 05.11.2002, 16:39   #7
TP-Moderator
 
Registriert seit: Nov 2002
Ort: Hamburg
DracheTe ist auf einem guten Weg
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
DracheTe ist offline   Mit Zitat antworten
Alt 05.11.2002, 16:47   #8
TP-Veteran
 
Benutzerbild von Flow09
 
Registriert seit: Jun 2001
Ort: Wien
Flow09 ist auf einem guten Weg
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.
Flow09 ist offline   Mit Zitat antworten
Alt 05.11.2002, 17:02   #9
TP-Specialist
 
Benutzerbild von mike
 
Registriert seit: Jan 2002
Ort: TP/Dynamik
mike bringt sich richtig ein
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
mike ist offline   Mit Zitat antworten
Alt 05.11.2002, 18:40   #10
TP-Moderator
 
Registriert seit: Nov 2002
Ort: Hamburg
DracheTe ist auf einem guten Weg
Zitat:
und das geht?

ich bin immer wieder fasziniert welch 'perversitäten' mysql zulässt

wieso nicht???
DracheTe ist offline   Mit Zitat antworten
Alt 05.11.2002, 18:55   #11
TP-Specialist
 
Benutzerbild von mike
 
Registriert seit: Jan 2002
Ort: TP/Dynamik
mike bringt sich richtig ein
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
mike ist offline   Mit Zitat antworten
Alt 05.11.2002, 19:24   #12
TP-Moderator
 
Registriert seit: Nov 2002
Ort: Hamburg
DracheTe ist auf einem guten Weg
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)
DracheTe ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
Kleines Problem mit DISTINCT Kleines Problem mit DISTINCT
« MySql und Datumsformat | Cookies & PHP3/4 »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:39 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67