tbl_students と tbl_inv の 2 つのテーブルがあります。Student テーブルには、学生に関するすべての情報が保持されます。学生の請求書 (毎月) の記録を作成して保持するための請求書発行システムを作成しています。tbl_inv には、1 人の学生に対して日付が異なる複数の請求書を含めることができます。最新の請求書、合計、ステータスを最新の請求書の日付順に並べたすべての学生を一覧表示する配列を作成しようとしています。私は mysql と php を使ったプログラミングにかなり慣れていないので、私の質問がばかげているように聞こえたら申し訳ありません。これは私がクエリのために持っているものです.....
$query = "SELECT * FROM tbl_student
LEFT JOIN tbl_inv ON tbl_student.sid = tbl_inv.inv_sid
GROUP BY tbl_student.sid
ORDER BY tbl_inv.inv_date DESC";
これにより、生徒ごとに 1 行の配列が作成されますが、最新の請求書の日付と詳細は表示されません。
誰かが助けてくれれば、私は大歓迎です:-)
(直接のコメントから既存の回答へのプルの追加)
これが機能する最後のクエリです。
SELECT
S.*,
TI2.*
FROM
tbl_student S
LEFT JOIN ( SELECT
TI.inv_sid,
MAX(TI.inv_id) LatestInvoice
FROM
tbl_inv TI
GROUP BY
TI.inv_sid ) PreQuery
ON S.sid = PreQuery.inv_sid
LEFT JOIN tbl_inv TI2
ON PreQuery.inv_sid = TI2.inv_sid
AND PreQuery.LatestInvoice = TI2.inv_id
ORDER BY
TI2.inv_id ASC
学生テーブルの f_link というフィールドを使用して、学生同士をリンクさせます。生徒に家族がリンクされている場合、f_link フィールドにはマスター ID 番号が表示されます。家族のリンクがない場合、フィールドには 0 が表示されます。私の請求システムでは、学生とその家族にリンクされている家族の請求書を作成しています。現在のクエリでは、家族の請求書のデータは表示されませんが、請求されています。このクエリを絞り込んで、f_link フィールドが 0 の学生のみを表示したいと考えています。