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'
Støv, fibre og metalliske partikler kan påvirke både uptime, levetid og driftssikkerhed. Derfor arbejder flere datacentre systematisk med contamination control.
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.