私は、次のような情報を提示するテーブルの数から可用性のグリッドを作成しようとしています。各会場についてはphp/mysql - unionクエリでデータグリッドを作成していますか?
------------------------------------------------------
venue | 22/11 | 23/11 | 24/11 | 25/11 | 26/11 |
------------------------------------------------------
Some venue | £24 | £25 | £32 | N/A | £65 |
------------------------------------------------------
Some venue | £20 | N/A | £22 | £34 | £43 |
-------------------------------------------------------
を私のようなクエリを使用して、選択した日付の期間のためのレコードセットを作成することができます
ここで重要なことは、私のレコードセットを正しい日数(つまり、稼働している週の5つのエントリ)に保ちながら使用できない日付に対してはnull値を返すことができるということです。
そうのようなものに、私は、データセットを結合するUNIONクエリを使用して簡単に検討していたこのリストに他の会場のそれぞれを追加するには:
(SELECT temp_date.queryDate, availability.venueId
FROM temp_date
LEFT JOIN availability
ON temp_date.queryDate = availability.date
AND availability.venueId = 7
GROUP BY temp_date.queryDate
ORDER BY temp_date.queryDate)
UNION
(SELECT temp_date.queryDate, availability.venueId
FROM temp_date
LEFT JOIN availability
ON temp_date.queryDate = availability.date
AND availability.venueId = 8
GROUP BY temp_date.queryDate
ORDER BY temp_date.queryDate);
10の異なる会場が言うとこれで私の懸念はあるという可能性クエリーを実行するにはかなり長い時間がかかる可能性があります。
私の質問は次のとおりです:UNIONクエリは私の唯一のオプションですか、クエリされているすべての会場で一週間の結果が得られるようにするために使用できる代替JOINがありますか?
がうまくいけば、これは明確である:-S
EDIT:
:下記必要なレコードのスクリーンショットと現在のクエリがされた後
は、私は何を示すために、
IN()を示唆するもの:
これはありがとう、私はすぐに演劇を持っています。そして、日付、重複は利用可能ではありません。 – simnom
@simnom:あなたは 'GROUP BY'を取り除くことができます、それは冗長です。 – Quassnoi
それは素晴らしい仕事です。ありがとうございました。 – simnom