这是我的表:
user table:
id..|..fname
1...|..dan
2...|..den
trans table:
.transid.|..userid....|..adid.....|..click
.....1...|....1.......|.....1.....|.....1
.....2...|....2.......|.....1.....|.....1
ads table:
id..|..adname
1...|..sample
我的选择条款是:
select u.fname,
t.click
from user u
inner join ads a on u.id=a.id
inner join trans t on a.id=t.transid
order by u.fname;
我期待
的结果fname....|..click
dan......|...1...
den......|...1...
但结果是错误的,它只显示第一行。这可能有什么问题?
答案 0 :(得分:3)
这可以通过仅加入两个表来实现:trans
和user
。
SELECT b.fname, a.click
FROM trans a
INNER JOIN user b
ON a.userid = b.id
另外,如果您想访问表格ads
并使用INNER JOIN
SELECT b.fname, a.click, c.adname
FROM trans a
INNER JOIN user b
ON a.userid = b.id
LEFT JOIN ads c
ON a.adid = c.id
答案 1 :(得分:1)
我想你想要以下内容:
select u.fname, t.click
from user u
left join trans t
on u.id=t.transid
left join ads a
on t.adid = a.id
order by u.fname;
答案 2 :(得分:1)
您想首先加入trans
表,因为它与user
有相互关系:
SELECT u.fname, t.click
FROM trans t
INNER JOIN user u
ON u.id = t.userid
ORDER BY u.fname;
答案 3 :(得分:1)
您只是以错误的顺序加入表格,以及错误的字段。
您的查询...
select u.fname, t.click
from user u
inner join ads a on u.id=a.id
inner join trans t on a.id=t.transid
order by u.fname;
您将users
加入ads
ad
和user
具有相同id
的{{1}}。
然后您将其加入trans
表,其中ad
与id
共享trans
。
这些都没有意义。
您应该将user
加入trans
表,其中包含userid
字段。
您还应该将ads
加入trans
表,其中包含adid
字段。
SELECT
u.fname,
a.click
FROM
user
INNER JOIN
trans
ON trans.userid = user.id
INNER JOIN
ads
ON ads.id = trans.adid