je la requête suivante:Cette requête doit-elle être imbriquée?
select group_concat(customer_name) customer_names,
count(customer_name) number_of_customers,
line_1,
line_2,
city,
state_name,
zip
from (select c.name customer_name,
ad.*,
s.name state_name
from address ad
join account_address aa on aa.address_id = ad.id
join account a on aa.account_id = a.id
join customer c on a.customer_id = c.id
join state s on ad.state_id = s.id
group by c.name) a
group by state_name, city, line_1, line_2
order by state_name, city, line_1, line_2
Est-ce que je dois imbriquer la façon dont je l'ai fait pour obtenir les deux couches de regroupement? Je préférerais ne pas avoir de sous-requêtes si je n'ai pas à le faire.
Edit: c'est la requête que je fini par utiliser:
select group_concat(distinct c.name) customer_names,
count(distinct c.name) number_of_customers,
line_1,
line_2,
city,
s.name,
zip
from address ad
join account_address aa on aa.address_id = ad.id
join account a on aa.account_id = a.id
join customer c on a.customer_id = c.id
join state s on ad.state_id = s.id
group by s.name, city, zip, line_1, line_2
order by s.name, city, zip, line_1, line_2
Ouais, MySQL. Je dois ajouter plus de caractères à ce commentaire pour qu'il soit "valide" parce que Stack Overflow est stupide. J'espère que vous êtes heureux, Stack Overflow. –
Y a-t-il une raison pour laquelle vous êtes anti-sous-requête? – JNK
@JNK: ils sont quelque peu inefficaces dans MySQL (ils sont tamponnés avant d'être traités). Il y a une raison de les éviter. Et ce ne sont pas les sous-requêtes, ce sont des vues en ligne. – Quassnoi