2

PHP / MySQL の使用

私は2つのテーブルを持っていますcustomerscust_data

2つに一致するフィールドがありますListID

cust_dataテーブル内にデータが次のようにリストされますcust_data

列:

ListID  DataName  DataValue
 1      type      something
 1      Region    something

お客様の列:

ListID Name Address City State Zip Phone

私は結果を取得したい

Name Address City State Zip Phone Type Region
4

2 に答える 2

1
SELECT customers.*, data_type.DataValue AS Type, data_region.DataValue AS Region
FROM   customers
  JOIN cust_data AS data_type ON (
         data_type.ListID   = customers.List_ID
     AND data_type.DataName = 'Type'
  )
  JOIN cust_data AS data_region ON (
         data_region.ListID   = customers.List_ID
     AND data_region.DataName = 'Region'
  )
于 2012-05-16T16:48:41.447 に答える
0

グループ クエリを使用して実行できます。ListIDでグループ化して単一の行を取得できるという事実により、これは比較的簡単になります。条件付きで選択し、必要に応じてDataValueフィールドにエイリアスを設定するだけです。

SELECT c.Name, c.Address, c.City, c.State, c.Zip, c.Phone,
    MAX (CASE WHEN d.DataName = 'type' THEN DataValue ELSE NULL END) AS  `Type`,
    MAX (CASE WHEN d.DataName = 'Region' THEN DataValue ELSE NULL END) AS  `Region`
FROM customers c, cust_data d
WHERE c.ListID = d.ListID
GROUP BY c.ListID, c.Name, c.Address, c.City, c.State, c.Zip, c.Phone
于 2012-05-16T16:49:26.483 に答える