0

请我需要弄清楚我做错了什么。我为 mysql 创建了这个内部连接代码。它有效,但它给了我重复的值,比如重复特定行两次或 categoryid 两次。每个表(users,paymentnotification,monthlyreturns)都有 categoryid 用于检查和显示用户表中的用户名(users.pname),然后使用 categoryid 检查并显示那些从每月回报和付款表中付款的人.

$r="SELECT monthlyreturns.categoryid, monthlyreturns.month, monthlyreturns.quarter, monthlyreturns.year,paymentnotification.amount, users.pname, monthlyreturns.ototal, paymentnotification.payee, status
FROM paymentnotification 
INNER JOIN (monthlyreturns INNER JOIN users ON monthlyreturns.categoryid=users.categoryid) 
ON monthlyreturns.categoryid=paymentnotification.categoryid 
ORDER BY monthlyreturns.categoryid DESC";
4

4 回答 4

2

我认为您想要的查询更像是这样的:

SELECT b.categoryid, b.month, b.quarter, b.year, a.amount, c.pname, b.ototal, a.payee, status
FROM paymentnotification a
INNER JOIN monthlyreturns b
   ON a.categoryid = b.categoryid
INNER JOIN users c
   ON b.categoryid = c.categoryid
ORDER BY b.categoryid DESC

您进行相关性的方式似乎并不明确,可能会导致问题。试试这个,看看会发生什么。如果它仍在重复,则数据的性质可能需要进一步过滤。

于 2013-05-21T21:24:07.660 回答
1

假设我理解你想要做什么,你没有正确加入你的桌子。尝试一次加入一个

SELECT DISTINCT monthlyreturns.categoryid, monthlyreturns.month, monthlyreturns.quarter, monthlyreturns.year,paym entnotification.amount, users.pname, monthlyreturns.ototal, paymentnotification.payee, status
FROM paymentnotification 
INNER JOIN monthlyreturns
ON paymentnotification.categoryid = monthlyreturns.categoryid
INNER JOIN users 
ON monthlyreturns.categoryid = users.categoryid
ORDER BY monthlyreturns.categoryid DESC
于 2013-05-21T21:23:19.070 回答
0

SELECT M.categoryid, M.month, M.quarter, M.year, M.ototal,

   P.amount, P.payee, P.status,

   U.pname

FROM paymentnotification AS P

INNER JOIN 每月返回 AS M ON P.categoryid = M.categoryid

INNER JOIN users AS U ON M.categoryid = U.categoryid

ORDER BY M.categoryid DESC

于 2014-12-31T13:45:07.260 回答
0

我没有看到任何问题.. 我得到 4 个结果行:检查这个小提琴http://sqlfiddle.com/#!2/165a22/5

这是我使用的查询:

SELECT m.categoryid, m.month, m.quarter, m.year,p.amount, u.pname, m.ototal, p.payee, m.status
FROM paymentnotification p JOIN monthlyreturns m ON p.categoryid = m.categoryid
JOIN users u ON u.categoryid = m.categoryid
ORDER BY m.categoryid DESC

如果您考虑选择的每一列,则没有重复的行,只有“唯一”行。

希望能帮助到你

于 2013-05-22T08:00:09.887 回答