いつもお世話になっております。
PHPにSQLを書いているのですが、以下のように書かれている時の太字の細かいhoやseが何を指しているのか分かりません。
$where .= " AND EXISTS (SELECT 1 FROM hoge ho WHERE ho.hoge_id = hige.hi_id AND se.hige IS NULL)";
よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
ベストアンサー
同一SQL内で使用できるテーブルの別名です
長いテーブル名だったり
副問い合わせで作ったテーブルを書くのは大変なので
テーブルに別名を付けて
参照する際はテーブルにつけた別名を利用します
例でいえばhoは同一SQL内ではすべてhogeテーブルを意味します
投稿2015/07/30 04:32
総合スコア985
0
ho や se はテーブル名の省略したものです。
コードを見る限り、ho.hoge_id は hote テーブルの hoge_id を指していると思います。
このコードの前述部分を見てみると、se が何のテーブルの省略名か分かるのではないでしょうか。
本来なら、
SELECT 1 FROM hoge WHERE hoge.hoge_id = hige.hi_id ~
と書くのですが、項目が多くなってくるといちいちテーブル名を書くのが面倒(というよりSQLの文字数制限とかもあったはず)なので、このような省略した書き方をします。
ちなみに、省略名はSQLの予約語意外なら自分で勝手に決めれます。
例えばですが、
SELECT tablehogehoge.id, tablehogehoge.name, tablehogehoge.age FROM tablehogehoge WHERE tablehogehoge.id=1;
と
SELECT t.id, t.name, t.age FROM tablehogehoge AS t WHERE t.id=1;
は同じです。
投稿2015/07/30 04:40
総合スコア18
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
テーブル名のエイリアスです。
例えば、テーブル名が SuperUltraSpecialHyperLongTableName というテーブル名だったとき、列名を指定するときにテーブル名もキチンと指定しようとすると次のようになりますが。
select SuperUltraSpecialHyperLongTableName.a, SuperUltraSpecialHyperLongTableName.b, SuperUltraSpecialHyperLongTableName.c, SuperUltraSpecialHyperLongTableName.d from SuperUltraSpecialHyperLongTableName where SuperUltraSpecialHyperLongTableName.a = 1 order by SuperUltraSpecialHyperLongTableName.b desc, SuperUltraSpecialHyperLongTableName.c desc
エイリアスを使えば次のように短く書けます。
select t.a, t.b, t.c, t.d from SuperUltraSpecialHyperLongTableName t where t.a = 1 order by t.b desc, t.c desc
また、次のように同じテーブルを1回の SQL で使う必要がある場合、エイリアスを使わないと、列名を指定するときに、1個目と2個目のどっちなのかわからなくなります。
下記の例でエイリアスを使わない場合、select 句の id がどっちの id なのか特定できなくなります。このようなケースではエイリアスは必須です。
select A.id, B.id from SuperUltraSpecialHyperLongTableName A join SuperUltraSpecialHyperLongTableName B
投稿2015/07/30 04:36
編集2015/07/30 04:37総合スコア4514
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/07/30 04:47