09. marts 2008 - 01:20Der er
4 kommentarer og 1 løsning
left join select
burde den her i princippet ikke virke?
SELECT *, INET_NTOA(ip) AS ip_oct, tmp.user_id FROM $DB.$TABLE LEFT JOIN ( SELECT user_id, COUNT(user_id) AS num FROM $DB2.log_login GROUP BY user_id ORDER BY num DESC LIMIT 1 ) tmp ON tmp.ip_id=ip ORDER BY time DESC LIMIT 100
dog får jeg alligevel: Unknown column 'tmp.ip_id' in 'on clause'
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
men jeg tror jeg er kommet et skridt nærmere løsningen, for nu kommer der i det mindste et mere fornuftigt udtræk som giver mere mening
query: ------------------------------------- SELECT tbl.*, INET_NTOA(tbl.ip) AS ip_oct, tmp.user_id FROM $DB.$TABLE tbl LEFT JOIN $DB2.ip ip ON ip.ip=tbl.ip INNER JOIN ( SELECT ip_id, user_id, COUNT(user_id) AS num FROM $DB2.log_login GROUP BY user_id ORDER BY num DESC LIMIT 1 ) tmp ON tmp.ip_id=ip.id ORDER BY tbl.time DESC LIMIT 100 -------------------------------------
Når man tager INNER JOIN SELECT for sig selv altså:
SELECT ip_id, user_id, COUNT(user_id) AS num FROM $DB2.log_login GROUP BY user_id ORDER BY num DESC LIMIT 1
giver den:
ip_id user_id num 21 12 2235
men når man tager hele queryen trækker den kun rækker ud hvor user_id=12 ?? man skulle tro der går noget galt hvor INNER JOIN SELECT skal kommunikere med yderliggende SELECT ??
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.