Comment utiliser SELECT DISTINCT et CONCAT dans la même instruction SQL
Je suis donc nourrir les résultats de cette SQL dans un tableau. Le tableau devient plus tard l'suggestions pour une zone de texte qui s'opère lors de la frappe. Je veux qu'à chaque nom 1 fois, même si la personne a plusieurs rendez-vous. Actuellement, ceci renvoie à tous les rendez-vous de la personne avec ce nom, donc si "Brad Robins" a 5 rendez-vous, et je commence à taper "Brad", il affiche "Brad Robins" 5 fois dans les suggestions au lieu d'une seule fois.
$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."';";
Pour moi, il semble juste comme DISTINCTES et CONCAT ne jouez pas bien ensemble.
Si le seul but de cette requête est de retourner une liste de noms à suggérer à l'utilisateur, et vous n'êtes pas vraiment à l'aide de la rendez-vous de la table dans le résultat final de votre programme... pourquoi vous joindre à elle en premier lieu?
J'utilise l'autre info plus tard, mais il était assez facile de séparer et de faire deux requêtes, ne laissant que le nom à la première
J'utilise l'autre info plus tard, mais il était assez facile de séparer et de faire deux requêtes, ne laissant que le nom à la première
OriginalL'auteur radleybobins | 2012-01-27
Vous devez vous connecter pour publier un commentaire.
Distinctes qui va à l'encontre de l'ensemble de la ligne de TOUTES les colonnes, et pas seulement le nom de la partie... Donc, si les rendez-vous sont sur différents date/temps, des lieux, etc, ils viendront tous. Si tout ce que vous voulez montrer, c'est le NOM de la partie, la bande reste de l'autre contenu. Requête de l'un rendez-vous APRÈS une personne a été choisie.
OriginalL'auteur DRapp
Le problème ce sont les autres champs; DISTINCT s'applique à la totalité du résultat. Probablement la meilleure chose est de faire de requêtes distinctes ou remplir les 2 différents tableaux; si vous commandez PAR nom, vous pouvez supprimer les doublons en les copiant dans le tableau dest uniquement lorsque les changements de nom.
ces deux réponses sont correctes et ont été présentés dans le même temps. Je suis désolé, je ne pouvais pas marquer tous les deux corrects. Merci pour votre temps!
Je vais poney-un vote pour vous aussi, donc au moins 10 points +...
OriginalL'auteur Luis
Ne pas utiliser DISTINCTES, l'utilisation de group by:
Aussi être prudent sur les XSS dans $école $et colocataire, si ce accessible de l'extérieur.
OriginalL'auteur vimdude
Vous pouvez utiliser
à la fin, ce qui serait la cause de la requête pour renvoyer un seul de chaque nom, mais vous ne pouvez pas prédire ce rendez-vous, les résultats seront retournés dans les cas où un client a plusieurs rendez-vous, et la requête cesse de lui être très utile.
Comme d'autres l'ont souligné, vous devriez probablement juste obtenir la liste des rendez-vous après que le client a été choisi.
OriginalL'auteur bricriu
Select distinct concat(....)
À partir de ....
OriginalL'auteur Yes