php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 02.07.2006, 15:04  
Neuer Benutzer
 
Registriert seit: 02.07.2006
Beiträge: 3
mayer
Standard Problem mit Ausgabe bzw. Abfrage mit ORDER BY

Hallo,

ich habe ein Problem mit der Ausgabe einer mySQL-Abfrage, speziell beim Sortieren der Ausgabe:


Datenbank "kunden" mit Kundendaten
abgefragt wird per Formular das Bundesland
ausgegeben werden sollen dann aus dem gewählten Bundesland die Kunden mit: Name, Strasse, Stadt, Bundesland, Telefon

Diese Ausgabe soll dann geordnet werden:
1. zuerst sollen alle Einträge angezeigt werden mit Priorität 1, alphabetisch nach Namen
2. und dann alle anderen (Priorität 2) geordnet alphabetisch nach Städten

Ich hab´s probiert mit (Auszug)

PHP-Code:
$anfrage mysql_query("SELECT Name, Strasse,Stadt, Bundesland, Telefon FROM kunden WHERE Bundesland = '$Bundesland' ORDER BY Priority = '1' DESC, City"); 
Die Ausgabe zeigt tatsächlich alle Kunden mit Priorität 1 als erstes an, allerdings nicht geordnet alphabetisch nach Namen, sondern alphabetisch nach Stadt (so wie Order Kriterium 2). Alle anderen mit Priorität 2 werden, wie gewünscht, dann nach Städten geordnet.

Da muss ich doch bestimmt das erste ORDER Kriterium mit der Priorität 1 irgendwie verknüfen mit einer zusätzlichen ORDER nach Namen, oder?

Kann einem anfänger mal einer auf die Sprünge helfen, wie so was geht bzw. wie die o.a. Ausgabe professionell lautet? Danke.

mayer
mayer ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 02.07.2006, 15:41  
Erfahrener Benutzer
 
Registriert seit: 06.08.2003
Beiträge: 453
PHP-Kenntnisse:
Fortgeschritten
Mano
Standard

Was soll das bringen??
PHP-Code:
ORDER BY Priority '1' 
richtig:
PHP-Code:
ORDER BY 'Feldname' 

Zitat:
1. zuerst sollen alle Einträge angezeigt werden mit Priorität 1, alphabetisch nach Namen
PHP-Code:
$anfrage mysql_query("SELECT Name, Strasse, Stadt, Bundesland, Telefon FROM kunden WHERE Bundesland = '" $Bundesland "' AND Priority = '1' ORDER BY Name ASC"); 
Zitat:
2. und dann alle anderen (Priorität 2) geordnet alphabetisch nach Städten
PHP-Code:
$anfrage mysql_query("SELECT Name, Strasse, Stadt, Bundesland, Telefon FROM kunden WHERE Bundesland = '" $Bundesland "' AND Priority = '2' ORDER BY Stadt ASC"); 
Mano ist offline   Mit Zitat antworten
Alt 02.07.2006, 16:36  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Und woher kommt Priority?

Korrekt ist:
Code:
ORDER BY name ASC, stadt ASC
Prioritäten setzt du durch die Reihenfolge nach ORDER BY fest.
Zergling-new ist offline   Mit Zitat antworten
Alt 02.07.2006, 16:50  
Neuer Benutzer
 
Registriert seit: 02.07.2006
Beiträge: 3
mayer
Standard

@zergling
Es gibt in der Datenbank ein Feld "Priority" mit der Belegung 1 und 2. Einträge mit 1 sind privilegiert und sollen somit vorrangig angezeigt werden

@mano
Erklärung Priority wie oben
Danke für die Scripterweiterung, jedoch müssen doch jetzt diese beiden abfragen in eine abfrage kombiniert werden, denn so zeigt mir die Ausgabe nur die 2.Abfrage an.

Bei Abfrage des Bundeslandes sollen die Suchergebnisse, geordnet nach 1. Priorität1 alphabetisch nach Namen und Priorität2 alphabetisch nach Städten beide in einer Ausgabe angezeigt werden.



Ich habe jetzt aufgrund Eurer Tipps und sich daraus ergebender Möglichkeiten folgendes probiert:

... ORDER BY Priority = '1' DESC, Name, City

jetzt werden alle Einträge mit Priorität 1 so wie ich es wollte angezeigt, geordnet nach dem (Kunden)Name. Passt.

Diesem Ergebnis schließen sich die Einträge mit Priorität 2 an, allerdings jetzt auch geordnet nach dem (Kunden)Namen. Diese sollten allerdings zuerst nach dem Stadtnamen alphabetisch geordnet werden und bei gleicher Stadt dann eben alphabetisch nach dem (Kunden)Namen. Das passt noch nicht...


grübel....
mayer ist offline   Mit Zitat antworten
Alt 02.07.2006, 17:09  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

ORDER BY priority ASC, Name ASC, City ASC

Es wird zuerst nach Priorität (1, 2, ..), dann nach Name (Arheidt, Becker, ..) und zuletzt nach Stadt (Aachen, Berlin, ..) sortiert, jeweils also die Untermenge der bereits sortierten Mengen.

Wenn du die Sortier-Reihenfolge von Priorität zu Priorität unterscheiden möchtest - also bei Priorität = 1 zuerst nach Geschlecht, dann nach Herkunft und bei Priorität = 2 zuerst nach Intelligenz und später nach Anzahl der noch vorhandenen Finger, dann musst du getrennte SELECTs durchführen (mittels WHERE-Bedingung nach Priorität filtern) und diese mit UNION zusammenführen.

Schlagworte kannst du ruhig mal im MySQL-Handbuch oder Google nachschlagen...
Zergling-new ist offline   Mit Zitat antworten
Alt 02.07.2006, 19:58  
Neuer Benutzer
 
Registriert seit: 02.07.2006
Beiträge: 3
mayer
Standard UNION probiert...

Danke Zergling für die Tipps

Ich hab jetzt mal versucht meine beide SELECTs zu kombinieren mit UNION - hat aber nicht funktioniert, da jetzt gar kein Ergebnis mehr geliefert wird (eine Fehlermeldung wird allerdings allerdings auch nicht ausgelöst)

habe folgendes probiert:

PHP-Code:
$anfrage mysql_query("SELECT Name, Stadt, Bundesland,Telefon FROM kunden WHERE Priority = '1' ORDER BY Name UNION SELECT Name, Stadt, Bundesland,Telfon FROM kunden WHERE Bundesland = '$Bundesland' ORDER BY Priority = '2', Stadt"); 
mayer ist offline   Mit Zitat antworten
Alt 02.07.2006, 20:11  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Wundert mich, oder hast du in der DB auch Telfon statt Telefon stehen? Hast du meinen Code-Teil mal ausprobiert?

Wenn ja würde ich dich bitten nochmal 10 Beispiel-Datensätze komplett hier zu posten, mal unsortiert wie sie in der DB stehen und mal sortiert, so wie du es dir wünscht.

Und lass endlich das ORDER BY Priority = '2' weg, das ergibt einen Boolschen Wert, mit dem du zwar auch sortieren kannst, aber ich glaube nicht dass das so beabsichtig ist.
Zergling-new ist offline   Mit Zitat antworten
Alt 02.07.2006, 21:45  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard

Diese Doppelpostings sind ziemlich ärgerlich: http://www.selfphp.info/forum/showthread.php?t=13884
xabbuh 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
Problem mit kleiner Abfrage trash PHP Tipps 2008 14 06.07.2008 21:09
[Erledigt] MySql Frage: Problem mit einer etwas lomplexeren Abfrage tomtaz Datenbanken 5 24.06.2008 22:36
Abfrage mit count, order by, group by...und Probleme BartTheDevil89 Datenbanken 2 15.06.2008 13:34
[Erledigt] problem keine ausgabe coraplanet PHP Tipps 2008 12 02.05.2008 18:51
Class Ausgabe Problem wk-moray PHP-Fortgeschrittene 6 12.02.2008 10:06
Abfrage = "SELECT * FROM links ORDER BY id" Taktaky PHP Tipps 2008 2 22.08.2007 14:37
Problem mit der Ausgabe Kein Genie PHP Tipps 2006 5 26.11.2006 21:24
Problem mit array() Ausgabe alisa PHP Tipps 2006 4 18.10.2006 15:58
Mysql SELECT Abfrage -- Problem mit LIMIT djrace Datenbanken 2 01.05.2006 12:58
Problem mit Ausgabe PHP Tipps 2005-2 5 11.07.2005 18:34
Problem mit Ausgabe picco PHP Tipps 2004-2 2 24.12.2004 15:38
Abfrage Problem (vermute ich) PHP Tipps 2004-2 3 14.12.2004 22:21
[Erledigt] Problem mit abfrage Datenbanken 8 05.12.2004 12:46
[Erledigt] Mysql Abfrage Problem! PHP-Fortgeschrittene 5 27.11.2004 10:22
Grundlegende Frage zur Ausgabe einer Abfrage PHP Tipps 2004 1 24.09.2004 14:07

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
order by funktioniert nicht, php order by alphabetisch, order by alphabetisch, http://www.php.de/datenbanken/40991-problem-mit-ausgabe-bzw-abfrage-mit-order.html, order by ausgabe, mysql union order by, order by priorität, mysql order by alphabetisch, mysql union order by funktioniert nicht, mysql datenbank alphabetisch abfragen, order by priorität \nicht alphabetisch\, mysql order by prioritäten, order by funktioniert nicht character, order by nicht alphabetisch, order by erst kriterium 1 dann 2, problem mit order by, order by php, mysql union order by problem, order by und where kombinieren, php order by mysql durch benutzer

Alle Zeitangaben in WEZ +1. Es ist jetzt 14:57 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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.