0

finished_events と flagged_events の 2 つのテーブルをクエリしようとしています。まず第一に、company_id に関連するすべてが必要なので、

  SELECT *
  FROM finished_events
  WHERE company_id=$id
  ORDER by schedule, timestamp

次に、これを次のように変更しました。

SELECT * FROM finished_events 
INNER JOIN flagged_events 
      ON finished_events.company_id=flagged_events.company_id 
WHERE finished_events.company_id=$id
ORDER by finished_events.schedule, finished_events.timestamp

FULL JOIN、LEFT JOIN、および RIGHT JOIN を使用してみましたが、すべて失敗しました。具体的には、次のコードを組み合わせたものを取得したいと考えています。

$sql = "SELECT *
        FROM finished_events
        WHERE company_id=$id
        ORDER by schedule, time_stamp";

$flagged_sql = "SELECT * 
                FROM flagged_events 
                WHERE company_id=$id 
                ORDER by schedule, time_stamp";

テーブルは少し異なるため、UNION はここでは機能しません。ダミーのデータベース エントリを投稿できますが、両方のテーブルのすべてが必要なため、あまり役に立ちません。テーブル間の 2 つのリンクは、company_id 列とスケジュール列です。基本的に、舞台裏で行われているのは、タイムスタンプが別のテーブルに入れられ、それを処理して finished_events または flagged_events にすることです。フラグが設定されたイベントは、終了するイベントになるまで、ユーザーが何かを行う必要があります。したがって、このスクリプトは GUI 用のデータを生成しているため、両方のテーブルにクエリを実行し、顧客の詳細の連想配列を作成してから (これら 2 つのテーブルから) イベントの配列を作成する必要があります。したがって、assoc_array の作成は問題ありません。このクエリを取得して、すべてのイベントを吐き出し、正しく並べ替えるだけです。

EDIT SQL Fiddle: http://sqlfiddle.com/#!2/d4c30/1 これでほぼ修正されますが、完全には修正されません。下部にエントリが繰り返されます。

4

1 に答える 1