0

私は少し問題に遭遇しました。結合しているさまざまなテーブルがありますが、取得する各行のカテゴリも取得する必要があります。あるテーブルからカテゴリIDを取得してから、別のテーブルでカテゴリ名を検索する必要があります。見せやすいと思います。これがSQLクエリの失敗した試みです:

SELECT     DISTINCT(t.tour_name), tp.tprecio_precio_adulto, 
           tp.tprecio_precio_menor, category_name 
FROM       tour AS t 
INNER JOIN tour_categories AS cc ON tcategoria_fktour = t.tour_id
INNER JOIN tour_precio AS tp ON tp.tprecio_fktour = t.tour_id
LEFT JOIN  categories AS c ON c.category_id = tc.category_id 
WHERE      tp.tprecio_fecha_inicio <= '2012-10-27' 
       AND tp.tprecio_fecha_final >= '2012-10-27' 
       AND t.tour_activo = '1' 
       AND tp.tprecio_precio_adulto != '0.00'

そして、ここにテーブルのレイアウトがあります:

table: tour
tour_id      |    tour_name     
-----------------------------------------
 1                tour name 1
 2                tour name 2
 3                tour name 3

table: tour_categories
  category_id    |    tour_id    
------------------------------------
     1                   3             
     2                   3
     3                   3

 table: categories
      category_id    |    category_name    
    ------------------------------------
          1              category name 1            
          2              category name 2  
          3              category name 3  

ご覧のとおり、ツアーごとに複数のカテゴリが存在する可能性があるため、これらのカテゴリを取得してグループ化し、それぞれに対応するカテゴリ名を取得する必要があります。私はこれを行う方法に迷っています。どんな助けでも大歓迎です!助けてくれてありがとう

4

1 に答える 1

0

これが他の誰かを助けることができる場合に備えて、私はそれを理解しました。ツアー名にグループ連結を行い、区切り記号を追加しました。それは今完全に動作します:

SELECT GROUP_CONCAT(c.category_name ORDER BY c.category_name ASC SEPARATOR ', ') AS categories, t.tour_name
FROM tour AS t
INNER JOIN tour_categoria AS cc ON cc.category_id = t.tour_id
LEFT OUTER JOIN categoria AS c ON c.category_name_id = cc.category_id
GROUP BY t.tour_name
于 2012-10-28T17:04:34.223 に答える