简体   繁体   English

无法从其他表中获取 2 个值 SQL 查询,

[英]Cant fetch 2 values from other table SQL Query,

I'm newbie on SQL, I have 2 simple tables我是 SQL 的新手,我有 2 个简单的表格

ip_track ip_track

id ID current_ip_id current_ip_id old_ip_id旧的ip_id
1 1个 1 1个 1 1个
2 2个 2 2个 9 9
3 3个 1 1个 8 8个

And ipip

id ID ip ip
1 1个 8.8.8.8 8.8.8.8
2 2个 195.19.97.117 195.19.97.117
8 8个 8.8.4.4 8.8.4.4
9 9 1.2.3.4 1.2.3.4

AND I want to get current_ip_id and old_ip_id with its ip in SELECT Statement like我想在 SELECT 语句中获取 current_ip_id 和 old_ip_id 及其 ip

id ID current_ip_id current_ip_id current_ip当前IP old_ip_id旧的ip_id old_ip旧IP
1 1个 1 1个 8.8.8.8 8.8.8.8 1 1个 8.8.8.8 8.8.8.8
2 2个 2 2个 195.19.97.117 195.19.97.117 9 9 1.2.3.4 1.2.3.4
3 3个 1 1个 8.8.8.8 8.8.8.8 8 8个 8.8.4.4 8.8.4.4

But if ids are different I got duplicates For example, for但如果 ID 不同,我会得到重复项 例如,对于
SELECT ip_track.id, current_ip_id, ip AS current_ip, old_ip_id, ip AS old_ip FROM ip_track INNER JOIN ip ON current_ip_id = ip.id OR old_ip_id = ip.id

id ID current_ip_id current_ip_id current_ip当前IP old_ip_id旧的ip_id old_ip旧IP
1 1个 1 1个 8.8.8.8 8.8.8.8 1 1个 8.8.8.8 8.8.8.8
2 2个 2 2个 195.19.97.117 195.19.97.117 9 9 195.19.97.117 195.19.97.117
3 3个 2 2个 1.2.3.4 1.2.3.4 9 9 1.2.3.4 1.2.3.4
4 4个 1 1个 8.8.8.8 8.8.8.8 8 8个 8.8.8.8 8.8.8.8
5 5个 1 1个 8.8.4.4 8.8.4.4 8 8个 8.8.4.4 8.8.4.4

But expect但期待

id ID current_ip_id current_ip_id current_ip当前IP old_ip_id旧的ip_id old_ip旧IP
1 1个 1 1个 8.8.8.8 8.8.8.8 1 1个 8.8.8.8 8.8.8.8
2 2个 2 2个 195.19.97.117 195.19.97.117 9 9 1.2.3.4 1.2.3.4
3 3个 1 1个 8.8.8.8 8.8.8.8 8 8个 8.8.4.4 8.8.4.4

How can it be solved?如何解决?

Join the ip table to the ip_track table twice :两次ip_track表加入到ip表中:

SELECT
    ipt.id,
    ipt.current_ip_id,
    ip1.ip AS current_ip,
    ipt.old_ip_id,
    ip2.ip AS old_ip
FROM ip_track ipt
LEFT JOIN ip ip1
    ON ip1.id = ipt.current_ip_id
LEFT JOIN ip ip2
    ON ip2.id = ipt.old_ip_id
ORDER BY ipt.id;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM