こんにちは、次の自己再帰クロス結合の代替構文があるかどうかを調べています。目的は、テーブルの一種の行フィラーです。日付には、すべての cdn のエントリが必要です。私はMySQLを使用しています
select
d.labelDate,
n.cdn,
networks.sites
from (
select
distinct labelDate
from
cdn_trend
) as d
cross join (
select
distinct cdn
from cdn_trend
) as n
left join cdn_trend as networks
on networks.labelDate = d.labelDate
and networks.cdn = n.cdn
order by
labelDate,
cdn
単純なエイリアスを使用してクロス結合を再キャストしようとしましたが、結合で列エラーが発生します。そうすることは可能ですか、代わりにビューの使用を検討する必要がありますか?
クロス結合は単純に 2 つのテーブルのデカルト積を返す必要があるため、結合せずに単純に両方を選択するのと同じである必要があります。ただし、次の場合、「on 句の不明な列 d.labelDate」例外が発生します。
select distinct d.labelDate, n.cdn, networks.sites
from
cdn_trend as d,
cdn_trend as n
left join cdn_trend as networks ON
(n.labelDate = networks.labelDate
and d.cdn = networks.cdn)
order by labelDate, cdn
Error Code: 1054. Unknown column 'd.cdn' in 'on clause'
との長さd
がn
比較的小さいため、クエリのサイズは十分に高速です。