更新:一番下に追加されたスキーマ...MySQLのクエリ、いくつかの正規化された表、問題ワット(PHP)から正規化されたテーブル行からカウント/
私が契約のテーブルがあります。tbl_contract
契約に関連付けられているユーザーの表:tbl_contract2user
はカラムと共に既存のエントリは、関係が存在することを意味するtbl_contract2user
のエントリの任意の数、(存在し得ますおよび0 = approved
)。
私の目標はです。指定された時間枠内に1人(またはそれ以上)のアクティブユーザーがいるすべての契約を選択します(下記参照)。
私が抱えている問題は、これらの契約を適切に並べ替えることができることです。日付範囲が正常に動作しています...何らかの理由で、ユーザー数が1以上の場合に問題が発生しました...(vs。0)とはい - そのデータセットを使用して作業します(クエリ)。
は...クエリの開始については、以下を参照してください
$result = mysql_query("SELECT tbl_contract.id
FROM tbl_contract
LEFT JOIN tbl_contract2user ON tbl_contract.id = tbl_contract2user.contractID
WHERE tbl_contract2user.pending = 0
AND tbl_contract.startDate <= {$billing['start_time']}
AND tbl_contract.endDate >= {$billing['end_time']}");
スキーマ:
tbl_contract:id, startDate, endDate, value, name, dateCreated
tbl_contract2user:id, contractID, userID, pending
テーブルスキーマ( 'CREATE TABLE'ステートメントとして)、サンプルデータ(' INSERT'ステートメントとして)、サンプルデータの望ましい結果を含めてください。 mysql拡張機能は古くなっており、廃止予定です。代わりに、mysqliまたはPDOとプリペアドステートメントを使用してください。 – outis
@outisこれは本当にシンプルなテーブルです。私は上記のスキーマを奨励しました(作成/挿入ステートメントとしてではなく、申し訳ありません - 私はそれについて少し不安です)。また、私はPHPのmysqlステートメントが減価償却されることを知らなかった - それはなぜですか?これは償却されても機能しなくなるということですか? – Shackrock
1人以上のアクティブユーザーが何を意味するのかを明確にしてください。あなたのスキーマによれば、それを示すフラグはありません。アクティブな契約を意味しますか? –