MySQL Left join

Gestart doorKitnkiller2 reacties90 weergaven

3 berichten · pagina 1 van 1

Kitnkiller

Lid · Topicstarter

Berichten
518
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Hellow
Afbeelding

SELECT client_id, domain_name, username, ipv4, productname, `memory`, culture
FROM `client_info`
LEFT JOIN (
SELECT client_id AS ipid, ipv4
FROM `client_ips`
ORDER BY `since` DESC) AS `client_ips` ON `client_ips`.`ipid` = `client_info`.`client_id`


Ik heb in client_info 2 computers. In client_ips heb ik meerdere IPs. Ik wil alle computers ophalen met het laatste IP erbij. Ik krijg alsnog even veel rows als IPs, ookal gebruik ik een join right/left.

Iemand enig idee hoe ik dit oplos?

Bedankt
0
Berichten
8.602
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Dus je wilt het laatste ip adres van de bijbehorende computer ophalen?

SELECT
  (SELECT ipv4 FROM client_ips WHERE client_id = id ORDER BY since DESC LIMIT 1) AS lastIp
FROM client_info


Dit is ff pseudo code. heb niet echt naar je tabel structuur gekeken.
0
Kitnkiller

Lid · Topicstarter

Berichten
518
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Milan schreef:
Dus je wilt het laatste ip adres van de bijbehorende computer ophalen?
SELECT
  (SELECT ipv4 FROM client_ips WHERE client_id = id ORDER BY since DESC LIMIT 1) AS lastIp
FROM client_info


Dit is ff pseudo code. heb niet echt naar je tabel structuur gekeken.

Dat had ik me ook al bedacht, maar ik vermijd subqueries liever wegens performance. En je had dan dit als code gehad:

SELECT client_id, domain_name, username, (
SELECT ipv4
FROM `client_ips`
WHERE `client_ips`.`client_id` = `client_info`.`client_id`
ORDER BY `since` DESC
LIMIT 1), productname, `memory`, culture
FROM `client_info`
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren