J'ai une table de visite (de visit_table), structure:MySQL - comment GROUPER par le résultat d'une autre requête?
- ID
- IP_address
- timestamp
et une table (country_table) avec des noms de pays pour les plages IP
- ID
- begin_IP (début de la plage d'adresses IP)
- de end_IP (fin de la plage d'adresses IP)
- de begin_num (l'équivalent numérique de begin_IP, à savoir INET_ATON (begin_IP))
- END_NUM
- country_code (par exemple, US)
- country_name
(basé sur http://www.maxmind.com/app/csv)
J'utilise MySQL 5.0.67 et je voudrais écrire une requête pour renvoyer le nombre de visites par pays, donc quelque chose le long des lignes de:
SELECT country.table.country_name,
count(distinct visit_table.IP_address)
FROM country_table, visit_table
WHERE country_name = (SELECT country_name
FROM country_table
WHERE INET_ATON(visits.IP_address) >= begin_num
AND INET_ATON(visits.IP_Address) <= end_num
LIMIT 0,1)
GROUP BY country_table.country_name
Je suis sûr que je fais quelque chose de mal, mais ne savent pas comment résoudre - une sorte de JOIN ou de faire quelque chose avec le SELECT ou GROUP BY? Tous les pointeurs sont les bienvenus!
Je pense que vous pouvez écrire une instruction select dans le groupe par clause sous la forme d'un sous-sélection. Cela fonctionne sur Oracle, peut-être que cela fonctionne aussi sur mysql. Quelqu'un peut-il confirmer cela? – Falcon