php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 07-10-2009, 11:40
streuner
 Registrierter Benutzer
Links : Onlinestatus : streuner ist offline
Registriert seit: Aug 2009
Ort: Lüneburg
Beiträge: 623
streuner ist zur Zeit noch ein unbeschriebenes Blatt
Lightbulb [gelöst] Order by

Hi.

Sehe gerade den Wald vor lauter Bäumen nicht. Hab eine recht einfache SQL Abfrage (MySQL DB) und will, dass für für jeweils 1 Produkt des Users die aktuellsten Daten ausgegeben werden: Siehe hier:

SELECT * FROM tabelle WHERE member_id = '1' GROUP BY produktname ORDER BY datum DESC //oder ASC

geht nicht:-(! Egal, ob ich "DESC/ASC" eingebe, kommen immer dieselben Werte raus. Die Ausgabe erfolgt, wie die Daten in der DB stehen, von oben nach unten und dann stimmt das aber mit dem aktuellsten Wert nicht. DESC o. ASC bezieht sich dann anscheinend schon auf die gefundenen Produkte und sortiert diese dann, aber es muss vorher nach dem aktuellsten Eintrag gefiltert werden. Was mache ich falsch?

Danke.

mfg streuner
__________________
Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.

"Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"
Mit Zitat antworten
  #2 (permalink)  
Alt 07-10-2009, 12:16
streuner
 Registrierter Benutzer
Links : Onlinestatus : streuner ist offline
Registriert seit: Aug 2009
Ort: Lüneburg
Beiträge: 623
streuner ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich habe noch den "TOP" Befehl gefunden, aber hier gibt mir die MySQL DB auch eine Fehlermeldung aus:

You have an error in your SQL syntax near...[usw.]
Hatte folgendes probiert:

SELECT TOP 1 * FROM tabelle WHERE user_id = '1' ORDER BY datum

Liegt das an meiner DB Version?

Thanx.

mfg streuner
__________________
Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.

"Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"
Mit Zitat antworten
  #3 (permalink)  
Alt 07-10-2009, 12:33
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

das TOP kenne ich nicht und ich vermute, MySQL geht es damit genau so. Dein vorheriger Versuch funktioniert zwar, aber nicht so, wie du erwartest.

Kann es sein, dass dein Problem dem hier entspricht? Ganz unten findest du als Beispiel den "negativen Left Join". Der ist aus Performancegründen günstiger als eine Unterabfrage.

Gruß,

Amica
Mit Zitat antworten
  #4 (permalink)  
Alt 07-10-2009, 12:44
streuner
 Registrierter Benutzer
Links : Onlinestatus : streuner ist offline
Registriert seit: Aug 2009
Ort: Lüneburg
Beiträge: 623
streuner ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi.

Hm...nicht ganz. Wollte eigentlich komplizierte Abfragen vermeiden, da ich davon ausgegangen bin, dass auch "einfach" mittels dem gezeigten Beispiel zu lösen ist.

Der Top Befehl (wenn er funktioniert) soll anscheinend den LIMIT Befehl ersetzen, aber es ist gut möglich, dass er "nur" für MS SQL funktioniert (getestet).

ASC oder DESC kann ich nicht vorher "einsetzen"? Hm, wenn es nicht anders geht muss ich das über LEFT JOIN machen.

Danke.

mfg streuner
__________________
Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.

"Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"
Mit Zitat antworten
  #5 (permalink)  
Alt 07-10-2009, 12:52
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von streuner Beitrag anzeigen
Hm...nicht ganz.
Was nicht ganz? Deine Antwort ist irgendwie etwas verwirrend.

Zitat:
Zitat von streuner Beitrag anzeigen
Wollte eigentlich komplizierte Abfragen vermeiden, da ich davon ausgegangen bin, dass auch "einfach" mittels dem gezeigten Beispiel zu lösen ist.
Ist nicht einfacher machbar, eins von beiden (left join oder subselect) braucht man dafür.

Zitat:
Zitat von streuner Beitrag anzeigen
Der Top Befehl (wenn er funktioniert) soll anscheinend den LIMIT Befehl ersetzen, aber es ist gut möglich, dass er "nur" für MS SQL funktioniert (getestet).
Wenn TOP = LIMIT 1 ist, bringt er dir gar nichts. Limit arbeitet auf dem gesamten Result und nicht gruppenweise und TOP vermutlich ebenso.

Zitat:
Zitat von streuner Beitrag anzeigen
ASC oder DESC kann ich nicht vorher "einsetzen"?
Na doch und das Ergebnis selektierst du dann nochmal mit GROUP BY und schon hast du ein Subselect.

Zitat:
Zitat von streuner Beitrag anzeigen
Hm, wenn es nicht anders geht muss ich das über LEFT JOIN machen.
Was ist denn daran so furchtbar?
Mit Zitat antworten
  #6 (permalink)  
Alt 07-10-2009, 12:56
streuner
 Registrierter Benutzer
Links : Onlinestatus : streuner ist offline
Registriert seit: Aug 2009
Ort: Lüneburg
Beiträge: 623
streuner ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
Was nicht ganz? Deine Antwort ist irgendwie etwas verwirrend.
sorry



Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
Ist nicht einfacher machbar, eins von beiden (left join oder subselect) braucht man dafür.
ok.



Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
Wenn TOP = LIMIT 1 ist, bringt er dir gar nichts. Limit arbeitet auf dem gesamten Result und nicht gruppenweise und TOP vermutlich ebenso.
Ja, meinte ja auch "ähnlich". Du hast sicherlich recht, dass das nur überSubSelect zu lösen ist.

Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
Na doch und das Ergebnis selektierst du dann nochmal mit GROUP BY und schon hast du ein Subselect.
Ja, macht Sinn. Kann es bei Subselects bei größeren Datenmengen zu Performance Problemen kommen?

Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
Was ist denn daran so furchtbar?
die Tipparbeit
__________________
Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.

"Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"
Mit Zitat antworten
  #7 (permalink)  
Alt 07-10-2009, 12:57
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von streuner Beitrag anzeigen
SELECT TOP 1 * ...
Ist MS SQL-Server.

Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #8 (permalink)  
Alt 07-10-2009, 13:01
streuner
 Registrierter Benutzer
Links : Onlinestatus : streuner ist offline
Registriert seit: Aug 2009
Ort: Lüneburg
Beiträge: 623
streuner ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ok, danke. Hatte es mit Ms SQL Server getestet, da ging es. Bei meinen MySQL DB's nicht. Ähnlichen Befehl für "TOP" gibt es in MySQL nicht (außer LIMIT)?

mfg streuner
__________________
Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.

"Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"
Mit Zitat antworten
  #9 (permalink)  
Alt 07-10-2009, 13:02
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von streuner Beitrag anzeigen
Ja, macht Sinn. Kann es bei Subselects bei größeren Datenmengen zu Performance Problemen kommen?
Ja! Bei korrelierten Subselects auf jeden Fall, daher vermeide ich die wo immer es geht. Unkorrelierte Subselects sind weniger schlimm, basieren ja aber meist selbst auf einem JOIN. (Für dich also das Maximum an "Tipparbeit" )

Daher nehme ich gleich einen JOIN und gar kein Subselect.
Mit Zitat antworten
  #10 (permalink)  
Alt 07-10-2009, 13:05
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von streuner Beitrag anzeigen
Ok, danke. Hatte es mit Ms SQL Server getestet, da ging es. Bei meinen MySQL DB's nicht. Ähnlichen Befehl für "TOP" gibt es in MySQL nicht (außer LIMIT)?

mfg streuner
LIMIT ist TOP. Und umgekehrt. Hängt halt vom DB-System ab.

Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #11 (permalink)  
Alt 07-10-2009, 13:07
streuner
 Registrierter Benutzer
Links : Onlinestatus : streuner ist offline
Registriert seit: Aug 2009
Ort: Lüneburg
Beiträge: 623
streuner ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
Ja! Bei korrelierten Subselects auf jeden Fall, daher vermeide ich die wo immer es geht. Unkorrelierte Subselects sind weniger schlimm, basieren ja aber meist selbst auf einem JOIN. (Für dich also das Maximum an "Tipparbeit" )
Na super! "Weniger schlimm" heißt jetzt aber nicht, dass sich bei mehreren 10000 Datensätzen, Abfragen/Ausgaben im Sekundenbereich (z.B. 5-10 Sek.) bewegen?

Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
Daher nehme ich gleich einen JOIN und gar kein Subselect.
Ok. Dann baue ich das gleich "vernünftig" mit Join auf!

Danke Dir nochmal.

mfg streuner
__________________
Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.

"Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[gelöst] <? und <?php parsen Hanniballector Fragen zu Installation & Konfiguration (LAMP, WAMP & Co.) 4 05-11-2009 10:07
[gelöst] PHP Autoload + GLOBAL ThaDafinser Fragen zu Installation & Konfiguration (LAMP, WAMP & Co.) 37 04-11-2009 17:15
[gelöst] SESSION und PHP-Timeout Gunah PHP Developer Forum 10 02-11-2009 15:00
[gelöst] Anfängerfragen OOP Lalelu PHP Developer Forum 7 24-10-2009 00:01
gelöst. Lennie Archiv / Trash 1 29-08-2006 23:35

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script ansehen ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script

Mit unserer Lösungen können Sie nahezu jeden B2B / B2C Marktplatz betreiben den Sie sich vorstellen können. Ganz egal ob Sie einen Automarktplatz, Immobilenportal oder einfach einen Anzeigenmarkt betreiben möchten. Mit ebiz-trader können Sie Ihre Anforder

11.10.2018 Berni | Kategorie: PHP/ Anzeigenmarkt
PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:52 Uhr.