2017-06-26 4 views
0

は私がPHPMyAdminの中で、合計3つのテーブルを持っている:はPHP PDOで多くの関係データへのいずれかを選択する方法

  1. 作品tmdb_movies

  2. キャストcastgenres:外部キーは、テーブルのcast_tmdb_idtmdb_moviestmdb_idscreenshot

  3. ジャンルです。外部キーは、テーブルtmdb_movies列のgenres_tmdb_idあるtmdb_idscreenshot

私は、次のフィールドを出力したい:

  • movie_title

  • すべてgenres_name

  • テーブル genresからテーブル tmdb_moviesから
  • 全てcast_namecastテーブル。

データを選択してエコーする最小のコマンドとは何ですか?私はSQLのjoinコマンドに慣れていません。

この私の現在のコードです

<?php 

    $stmt = $conn->prepare("SELECT tmdb_movies.*, GROUP_CONCAT(genres_name) as genres_name 
    FROM tmdb_movies JOIN genres ON tmdb_movies.tmdb_id=genres.cast_tmdb_id 
    GROUP BY tmdb_movies.cast_tmdb_id, tmdb_movies.tmdb_id, tmdb_movies.movie_title"); 

     // Then fire it up 
     $stmt->execute(); 
     // Pick up the result as an array 
     $result = $stmt->fetchAll(); 

     // Now you run through this array in many ways, for example 
     foreach ($result as $row) { 
     print "".$row["movie_title"]." ".$row["genres_name"] ." ".$row["cast_name"] ."<br/>"; 
    } 


    ?> 
+0

現在のコードでエラーが発生していますか?もしそうなら、エラーメッセージは何ですか? – jason

+0

'ON tmdb_movies.tmdb_id = genres.cast_tmdb_id'は' ON tmdb_movies.tmdb_id = genres.genres_tmdb_id'でなければなりません。 – jason

+0

'致命的なエラー:未知PDOException:SQLSTATE [42S22]:列が見つかりません:1054不明な列 'グループ文'の 'tmdb_movies.genres_tmdb_id' –

答えて

0
SELECT tmdb_movies.movie_title, GROUP_CONCAT(DISTINCT genres.genres_name SEPARATOR ', ') AS genres_names, GROUP_CONCAT(DISTINCT cast.cast_name SEPARATOR ', ') AS cast_name 
        FROM tmdb_movies 
        JOIN genres ON tmdb_movies.tmbd_id=genres.genres_tmdb_id 
        JOIN cast ON cast.cast_tmdb_id=tmdb_movies.tmbd_id 
        GROUP BY tmdb_movies.movie_title 
        ORDER BY tmdb_movies.movie_title 

Explainations:1つのフィールド内の別の行から

GROUP_CONCAT =>、連結フィールド

は=を登録しよう>次の2つのテーブルを作成し、そのことで対応キー

GROUP BY =>これらのフィールドごとのグループデータ

私は実際にあなたのテーブルを見ることなく私はできたことがあるので、最初の試行でうまくいかない場合はそれを適応させたいかもしれません。

関連する問題