php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 24.11.2008, 08:40  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard [Erledigt] MAX() in WHERE-Clause

Hallo Ihrs,

kann mir jemand sagen wie ich sowas am besten umsetzen kann?


Code:
SELECT id FROM CI_chargecountries WHERE id_country = MAX(id_country) GROUP BY id_chargeblock,datum
So bekomme ich

Code:
#1111 - Invalid use of group function
Muss ich das ernsthaft mit irgendwelchen Subquerys umsetzen?

Gruß und wie immer Danke im Vorraus
Cy
cycap ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 24.11.2008, 08:45  
Erfahrener Benutzer
 
Registriert seit: 28.03.2008
Beiträge: 1.847
HPR1974 wird schon bald berühmt werden
Standard

subquery
HPR1974 ist offline   Mit Zitat antworten
Alt 24.11.2008, 08:50  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Zitat:
Zitat von HPR1974 Beitrag anzeigen
subquery
Danke, aber ich hab gerade ne bessere Lösung gefunden

Code:
SELECT id FROM CI_chargecountries GROUP BY id_chargeblock,datum HAVING id_country = MAX(id_country)  
cycap ist offline   Mit Zitat antworten
Alt 24.11.2008, 09:01  
Erfahrener Benutzer
 
Registriert seit: 28.03.2008
Beiträge: 1.847
HPR1974 wird schon bald berühmt werden
Standard

bei having war ich mir nicht ganz sicher...
HPR1974 ist offline   Mit Zitat antworten
Alt 24.11.2008, 09:15  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Bei einer Abfrage mit HAVING sollte man immer mit EXPLAIN überprüfen, ob der Query Analyzer etwas sinnvolles aus der Abfrage macht.
David ist offline   Mit Zitat antworten
Alt 24.11.2008, 09:42  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Zitat:
Zitat von David Beitrag anzeigen
Bei einer Abfrage mit HAVING sollte man immer mit EXPLAIN überprüfen, ob der Query Analyzer etwas sinnvolles aus der Abfrage macht.
Und warum?
cycap ist offline   Mit Zitat antworten
Alt 24.11.2008, 09:57  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Weil HAVING in seiner Grundbedeutung heißt: "Nachdem die Ergebnismenge erstellt worden ist, prüfe folgendes ..."
Du hast keine WHERE-Bedingung, also ist die Ergebnismenge = alle Datensätze. Wenn der Analyzer/Optimizer nicht schlau ist, heißt das also in Deinem Fall, dass ein full table scan durchgeführt wird. Und "full table scan" heißt für mich übersetzt "dafür hätte man keine Datenbank gebraucht".
David ist offline   Mit Zitat antworten
Alt 24.11.2008, 10:00  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Hmm dann musst du mir jetzt mal explainen was mir EXPLAIN mit folgendem sagt:

Code:
id 	select_type 	table 	                type 	possible_keys 	key 	key_len   ref 	rows 	Extra
1 	SIMPLE 	        CI_chargecountries 	 ALL 	     NULL       NULL    NULL      NULL 	3925 	Using temporary; Using filesort
cycap ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Unknown column in 'where clause' Datenbanken 11 10.07.2011 18:11
Unknown column 'test' in 'where clause' PHP Tipps 2005 4 03.06.2009 14:20
Unknown column 'auswertung' in 'where clause' web4free Datenbanken 10 30.10.2008 14:23
erweiterte abfrage - where DarkManX Datenbanken 2 02.02.2007 17:14
Parsen von Delimitern Basti Tutorials 0 30.09.2006 21:24
Mehrere Werte in WHERE abfrage McNet Datenbanken 6 23.04.2006 02:06
[Erledigt] select where TIME Datenbanken 7 17.02.2006 12:40
where in? bzw. feld auf inhalte überprüfen...? Datenbanken 3 12.02.2006 16:00
[Erledigt] Falsche Ausgabe bei WHERE Clause Datenbanken 8 07.10.2005 10:18
[Erledigt] WHERE problem Datenbanken 5 12.06.2005 15:54
Befehlsoptimierung faux Datenbanken 4 31.05.2005 19:11
where string von einer funktion zu anderen transportieren PHP Tipps 2005 5 03.03.2005 16:29
Nur bestimmte Felder auslesen (forum_id) Datenbanken 10 22.10.2004 09:19
Problem mit dem WHERE Befehl PHP Tipps 2004 5 08.07.2004 00:03

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
sql max in where clause, max in where, max in where clause, max where clause, max() in where, sql \where max\, #1111 - invalid use of group function where id = max(id), max in where clause sql, sql use max in where clause, sql maximum in where clause, max clause sql, max() sql where clause, sql max in where-klausel, max in der where-klausel sql, \invalid use of group function\ max, sql max from where clause, sql where klause mit max, nur eine id aus group clause, use max in where clause, max in where klausel

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




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum