0

私が間違っていることを理解する必要があります。この内部結合コードは mysql 用に作成しました。それは機能しますが、特定の行を 2 回繰り返すか、categoryid を 2 回繰り返すなどの値が繰り返されます。各テーブル(users,paymentnotification,monthlyreturns)にはcategoryidがあり、userテーブルからユーザー名(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 に答える
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 に答える