• ベストアンサー

mysqlをphpでいじってるんですが・・・

実はややこしいテーブルを作ってしまって、データの加工に困っています。 ひとつのテーブル内に二つ、同じ外部テーブルを参照するテーブルです。 joinでひとつは結合できたのですがもうひとつはうまくいきません。この場合なにかよい解決策はありませんか?

質問者が選んだベストアンサー

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

テーブル名を各々Table1 as T1, Table2 as T2などと、as を使って別名で指定すればいくらでも同じ外部テーブルを「違うもの」として扱えます。 こちら↓の「AS alias」と記述されている部分です。 http://dev.mysql.com/doc/refman/4.1/ja/join.html

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 固定値を含む結合と複数テーブルの結合について

    「1.固定値を含む結合」と「2.複数テーブルの結合」について教えて下さい。 最近oracleを使い始めてSQLで表の結合を書く場面があるんですが LEFT(RIGHT) JOIN を使うのか、(+)を使って書くのかで迷っています。 LEFT(RIGHT) JOINだと固定値を含めて外部結合しようとするとエラーになってしまいます。 それが嫌で(+)を使っていたんですが 今度は複数のテーブルを(+)で結合しようとするとエラーになってしまいます。 (AテーブルとBテーブル、AテーブルとCテーブルなど?) こういう場合はどうすれば良いのでしょうか? とりあえず副参照をFROMに指定して対処してるんですが 何かきちんとした書き方があるのでしょうか?誰か教えて下さい。

  • MySQLでLEFT JOIN

    MySQL4.0.26でテーブルの左外部結合がしたいです。 左テーブルAと 右テーブルBをWHERE句で抽出したもの を結合することはできないのでしょうか? 考えた以下の式ではエラーが出てしまいます。 SELECT * FROM A LEFT JOIN ( SELECT * B WHERE id = 1 ) AS B2 ON A.id = B2.id

    • ベストアンサー
    • MySQL
  • MYSQLで表の結合と検索

    分かりやすくするために、テーブル名などは日本語で書きます。 曲名テーブルのアーティストはアーティストテーブルの番号から参照していて、 さらに、アーティストテーブルのアーティストは名前テーブルの番号から参照しています。 この場合に、曲名テーブルのアーティストを検索(例えば:「大塚愛」と検索)したいのですが、 検索してみても、なかなかピンとくる答えがありませんでした。 JOINで結合いいかと思いますが、テーブルから参照、さらにそのテーブルは、また別のテーブルから参照。 この様な場合はどうクエリーを書いたらいいか全くわかりません。 詳しい方宜しくお願いします。 現在、検証出来る環境がありません。 where 曲名 like '%大塚愛%'" 曲名テーブル +---------------+---------------+---------------+ |................[番号]............|................[曲名]............|.......[アーティスト].....| +---------------+---------------+---------------+ アーティストテーブル +---------------+---------------+ |................[番号]............|.......[アーティスト].....| +---------------+---------------+ 名前テーブル +---------------+---------------+---------------+ |................[番号]............|...............[名前]............|................[読み]............| +---------------+---------------+---------------+

  • SQL 外部結合について

    EXCELでODBC接続で外部データを取り込み、クエリテーブルを作成するところまではできるのですが、MicrosoftQueryを使って外部結合をしようとすると、テーブルが3個以上ある場合は外部結合できませんとエラーが表示されます。 直接SQLをさわれば出来るのかと思い、 SELECT フィールド名1, フィールド名2, ... FROM (((TABLE1 LEFT JOIN TABLE2 ON TABLE1.NO = TABLE2.NO)LEFT JOIN TABLE3 ON TABLE1.NO = TABLE3.NO)LEFT JOIN TABLE4 ON TABLE1.NO = TABLE4.NO)LEFT JOIN TABLE5 ON TABLE1.NO = TABLE5.NO を入力したのですが、「ORA-00942: 表またはビューが存在しません」というエラーが発生しました。 いろいろ調べてみたのですが全くの初心者なもので本当に困っております。 どなたかアドバイス等よろしくお願いします。

  • 異なるDB(Oracl と MySQL)の結合は可能でしょうか?

    JavaというかDBに関しての質問です。 仕事で元々 Access で作られていたアプリをWebアプリで作り直す事になりました。 元々の Access バージョンでは、 外部の Oracl への「リンクテーブル」を設け mdb のテーブルと結合させて データを表示するというような事をしています。 この度作成するWebアプリ版(Java)では、 元々の mdb のデータを新たに建てる MySQL へインポートし 外部の Oracl と MySQL のテーブルを結合しデータを読込み画面へ表示するというような事を実現したいです。 そもそも異なるDBを結合する事は可能なのでしょうか? 同期の問題があるので出来ればどちらかのDBにもう一方のDBのデータをコピーするというような事は避けたいです。 なお私の方で既に試した方法としてそれぞれのDB(テーブル)をJDBCで別々に読込んでクエリの結果セットをモデル化したJavaのオブジェクトに格納し その後、結合の条件を指定しマッピングするという実装を試してみましたがマッピングに非常に時間がかかり使い物になりませんでした。 ※やはりSQLには遠く及ばなそうです。 MySQL で Access のリンクテーブルのような便利機能はあるのでしょうか? Oracl はお客様が管理されており手を加えることが出来ません。 またデータベース側で出来ないとなればアプリ(Java)側で何とかしないとなりませんが Java で良い解決策はありますでしょうか? まとまりの無い質問となってしまいましたがどうぞ宜しくお願いします。

    • ベストアンサー
    • Java
  • 高度なmySqlの機能の使い方を教えてください。

    sqliteやmySqlを使い掲示板を何個か作りました。 基本コマンドからテーブルロックくらいまでで掲示板は作れたので、 MySQLの他の機能に意識しませんでしたが、下に書いた制約からレプリケーションまで機能が どのよな場面で使うのか知りたくなりました。 どのようなところで使うのか知りたいと思っています。 どなたかご存知でしたらどのような場面で使うのか簡単でいいので教えてもらえませんか? よろしくお願いします。 制約 整合性制約定義 ~ レプリケーション 質問項目) 必須なもの 頻繁に使うもの どういう場面で使うのか? プロジェクトの規模 大~小規模 何万行のデーター量か? データーベースの数テーブルの数 項目を参考にしたサイト ttp://kozy.heteml.jp/pukiwiki/index.php?FrontPage#o2834729 基本コマンド コマンドラインツール データ型 テーブル作成 select insert update/delete トランザクション テーブル 表結合(join)、単純結合、等価結合 テーブルロック 制約 整合性制約定義 テーブル 再帰結合 インデックス ストアドプロシージャ ストアドファンクション トリガ 外部キー ユーザ変数 フォルダ構造 設定ファイル ログファイル ユーザー管理 バックアップ レプリケーション

  • 複数テーブルを結合するには?

    OS:WINDOWSXP SP2 ORACLE:Oracle9i Enterprise Edition Release 9.2.0.1.0 A, B, Cというテーブルがあるとします。 それぞれのテーブルには XXカラムと YYカラムがあるとします。 2つのテーブルを結合させるには、以下のSQL文を記述すれば良いと考えています。 SELECT A.*,B.* FROM A JOIN B ON A.XX = B.XX 3つのテーブルを結合するには、以下のSQL文を記述しています。 SELECT A.*,B.*,C.* FROM A JOIN B ON A.XX = B.XX JOIN C ON A.XX = C.XX 但し、この記述方法でいきますと、Cテーブルを右側外部結合に指定した場合のみ、 ORA-00904 "C" 無効な識別子です。 というエラーメッセージが表示されます。 SELECT A.*,B.*,C.* FROM A JOIN B ON A.XX = B.XX RIGHT OUTER JOIN C (←LEFT OUTER、FULL OUTER)なら通ります) ON A.XX = C.XX 何故、右側外部結合のみ不正となるのか不明であり、解決策が見つかりません。 複数のテーブルを結合する為のSQL文の記述方法を教えて頂けますでしょうか?

  • MySQLのviewはデータをコピーするのですか?それともエイリアスのようなものですか?

    Webページのアクセスの度に、毎回大きいテーブル同士をJOINするのは効率が悪いと思います。 そのような場合、大きいテーブル同士をJOINしたVIEWを作成しておけば、データはコピーされて速度が増すのでしょうか? それとも、データはコピーされずに、結局、SELECTされる毎に内部的に毎回JOINされているのでしょうか?

    • ベストアンサー
    • MySQL
  • mySQLの内部結合について

    現在mySQLを使って、SQL文の勉強をしているのですがわからないことがあり、質問させていただきました。 テーブル同士をINNER JOINして結果を取得して、これに対してさらに別の処理(Whereなど)を行いたいのですが、うまくやり方がわかりません。 具体的にSQL文でいうとこんな感じです(ただしエラーが出て動きません)。 SELECT cmaster.comic_id,tags,title FROM mysql.comic_tag as ctag INNER JOIN mysql.comicmaster as cmaster ON ctag.comic_id = cmaster.comic_id AND WHERE tags = 'aa' この処理でやりたいことを説明するとcomic_tagとcomicmasterを結合して、その結果に対してさらにWhereでデータを絞るということしています。 このような場合はどのように処理をしたらいいんでしょうか?またjoinした後のデータを、既存のテーブルのように扱いたいのですが、なにか方法はないのでしょうか?

    • ベストアンサー
    • MySQL
  • MySQLで複数データベースの検索/ソートについて

    お世話になっております。 PHP4.4.1+MySQL4.1.15を使用しております。 複数のデータベースに含まれる複数のテーブルをひとつの大きなテーブルとして検索/ソートする方法はありませんでしょうか? 結合ではなく、全レコードを全て単体として検索/ソートをかけたいのです。 それぞれのデータベースに含まれるテーブルに、共通の項目があり、その共通の項目順にソートしたり、絞込をかけたりしたいのですが、調べてみても、どうしても結合(JOIN)に行き着いてしまいます。 JOINによる結合だと、共通の項目以外のレコードが表示されないので、これでは意味をなしません。 ご教授の程、お願い致します。

    • ベストアンサー
    • MySQL