Wie mit SELECT DISTINCT und CONCAT in der gleichen SQL-Anweisung
So, ich bin Fütterung die Ergebnisse dieser SQL in ein array. Das array wird später die Vorschläge für eine textbox, die arbeitet, während Sie Tippen. Ich will es nur jedes name 1 Zeit, auch wenn die person mehrere Termine. Momentan gibt alle Termine für die person mit diesem Namen, so dass, wenn "Brad Robins" hat 5 Termine, und ich fange an, den Typ "Brad", es zeigt "Brad Robins" 5 mal in die Vorschläge, anstatt nur einmal.
$sql = "SELECT DISTINCT CONCAT(clients.studentFirstName, ' ', clients.studentLastName) AS name, appointments.location, appointments.subLocation, appointments.appointmentAddress1, appointments.appointmentAddress2, appointments.appointmentCity, appointments.appointmentState, appointments.appointmentZip, appointments.startTime, appointments.endTime, appointments.date, clients.school
FROM appointments JOIN clients
ON appointments.clientID = clients.clientID
WHERE CONCAT(clients.studentFirstName, ' ', clients.studentLastName) = '".$roommate."' AND clients.school = '".$school."';";
Mir, es scheint nur, wie ausgeprägt und CONCAT nicht spielen schön zusammen.
Wenn der einzige Zweck dieser Abfrage ist die Rückgabe einer Liste mit Namen vor, dem Benutzer, und Sie sind nicht wirklich mit der Termine-Tabelle in der letzten Ausgabe in Ihrem Programm... warum Sie beitreten, um es in den ersten Platz?
Ich benutze die anderen Informationen später, aber es war leicht genug, um zu trennen und Sie zwei Abfragen, wobei lediglich die Namen der ersten
Ich benutze die anderen Informationen später, aber es war leicht genug, um zu trennen und Sie zwei Abfragen, wobei lediglich die Namen der ersten
InformationsquelleAutor radleybobins | 2012-01-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Distinct geht gegen die gesamte Zeile für ALLE Spalten, nicht nur der name Teil... Also wenn die Termine werden auf verschiedene Zeiten, Orte, etc, Sie werden alle kommen. Wenn alles, was Sie zeigen wollen, ist der NAME Teil, strip der rest des anderen Inhalten. Abfrage der verfügbaren Termine, NACHDEM eine person ausgewählt wurde.
InformationsquelleAutor DRapp
Das problem sind die anderen Felder; AUSGEPRÄGTE gilt für das gesamte Ergebnis. Wahrscheinlich das beste, was ist zu tun, um separate Abfragen oder füllen Sie 2 verschiedene arrays; wenn Sie eine ORDER BY name, Sie können entfernen Sie Duplikate durch kopieren in das array dest, nur wenn der name geändert wird.
beide Antworten sind korrekt und wurden gleichzeitig eingereicht. Tut mir Leid, ich konnte nicht markieren Sie die beiden richtigen. Vielen Dank für Ihre Zeit!
Ich werde pony-bis eine Stimme für Sie auch nicht, so dass mindestens eine 10-Punkt +...
InformationsquelleAutor Luis
Nicht EINDEUTIGE, verwenden Sie group by:
Auch vorsichtig sein, über die XSS in $school und $Mitbewohner, wenn dieser von außen zugänglich.
InformationsquelleAutor vimdude
Könnten Sie
am Ende, das dazu führt, dass die Abfrage nur jeder einen Namen, aber dann kann man nicht Vorhersagen, was die Ernennung Ergebnisse zurückgegeben werden, in Fällen, in denen ein Kunde hat mehrere Termine, und die Abfrage Stoppt sehr nützlich.
Wie andere haben darauf hingewiesen, Sie sollten wahrscheinlich nur die Liste der Termine nach dem der Kunde ausgewählt wurde.
InformationsquelleAutor bricriu
Select distinct concat(....)
Aus ....
InformationsquelleAutor Yes