2

次のような値のテーブルがあります。

TABLE:     prop_feat
TYPE       FEAT
Appliances Gas Range
Appliances Fridge
Interior   Hardwood Flooring

以下の機能を使用して Type を一度表示しようとしています。

家電

ガスレンジ、冷蔵庫

インテリア

堅木張りの床

これらは空になる可能性のある値なので、このテーブルを LEFT JOIN する必要があります。あちこち探しました!このような結果を表示するには、MySQL をどのように記述すればよいですか? これは私がこれまでに持っていたもので、まだ十分に行っていません。(私は知っています.. LEFT JOINではありません..)

SELECT *
  (SELECT GROUP_CONCAT( DISTINCT CONCAT ('', type, '', prop_feat.feat, '') 
   ORDER BY type ASC SEPARATOR ' '  )
FROM prop_feat
WHERE prop_feat.id_prop = '$page'  )  AS feat
FROM properties
WHERE id_pg = '$page'

どんな助けでも大歓迎です!

編集

これは私のクエリ全体です..結合がたくさんあります。これは、タイプ/機能の問題を困難にしています。

SELECT *,
GROUP_CONCAT(CONCAT('<tr><td>', style, '</td><td>', beds, '</td><td>', ba, '</td><td>', sq_ft, '</td><td>', rent, '</td><td>', dep, '</td></tr>') 
    ORDER BY beds DESC SEPARATOR '') AS unit, 
(SELECT 
    GROUP_CONCAT( DISTINCT CONCAT ('<h4>', type, '</h4><div>', prop_feat.feat, '</div>') 
        ORDER BY type ASC SEPARATOR ' '  )
    FROM prop_feat
    WHERE prop_feat.id_prop = '$page'  )  AS interior 
FROM properties 
INNER JOIN prop_units ON prop_units.id_prop = '$page'
LEFT JOIN prop_intro ON prop_intro.id_prop = '$page'  
LEFT JOIN prop_hours ON prop_hours.id_prop = '$page'  
WHERE id_pg = '$page'
GROUP BY type

Properties has: name, address, city, prov, postcode, phone (1 つのプロパティ - 基本情報を表示)
Prop_units has:beds, bath, square feet,rent,deposit, style
Prop_intro: title, text (場所の説明)
Prop_hours: Sunfrom 、Sunto、MonFrom、MonTo など (平日の営業時間)
Prop_feat: ハードウッド フローリングなどのプロパティ機能、タイプ別に並べ替えて、タイプを一度だけ表示する必要があります.. 可能であれば!

EDIT EDIT - 代わりにこれを使用

$info = mysql_fetch_array(mysql_query("SELECT *,
GROUP_CONCAT(CONCAT('<tr><td>', style, '</td><td>', beds, '</td><td>', ba, '</td><td>', sq_ft, '</td><td>$', rent, '</td><td>',IF(dep='','','$'), dep, '</td></tr>') 
    ORDER BY u_order ASC SEPARATOR '') AS unit
FROM properties 
INNER JOIN prop_units ON prop_units.id_prop = '$page'
LEFT JOIN prop_intro ON prop_intro.id_prop = '$page'  
LEFT JOIN prop_hours ON prop_hours.id_prop = '$page'  
WHERE id_pg = '$page'"));

$check = mysql_query("SELECT type, GROUP_CONCAT(CONCAT('<tr><td>', feat, '</td></tr>') SEPARATOR '') AS featlist
FROM prop_feat
WHERE id_prop = '$page'
GROUP BY type");
4

2 に答える 2

1

試す:

SELECT p.*, f.title, group_concat(distinct f.feat) features
FROM properties p
left join prop_feat f on p.id_pg = f.id_prop
WHERE p.id_pg = '$page'
group by f.title
order by f.title
于 2013-04-01T12:29:17.633 に答える
1

は集計関数であるGROUP BYため、句を使用する必要があります。GROUP_CONCAT()

SELECT  Title, GROUP_CONCAT(FEAT) FeatList
FROM    Prop_Feat
GROUP   BY Title

出力

╔════════════╦═══════════════════╗
║   TITLE    ║     FEATLIST      ║
╠════════════╬═══════════════════╣
║ Appliances ║ Gas Range,Fridge  ║
║ Interior   ║ Hardwood Flooring ║
╚════════════╩═══════════════════╝
于 2013-04-01T12:10:36.633 に答える