1

私のテーブルprice_matrix

id service_id  deadline  edu_level paper_stand  price
------------------------------------------------------
1     5         20         GCES       A          50
2     5         10         GCSE       A          30
3     5         20         GCSE       B          10
2     5         10         GCSE       B          40

次の形式の結果が得られるクエリを作成するにはどうすればよいですか

deadline   service_id   paper_stand A   paper_stand B edu_level
-----------------------------------------------------------------
20            5              50               10          GCES 
10            5              30                40          GCSE

私が使用しているクエリは

SELECT `paper_stand` , `deadline` , `price`
FROM `price_matrix`
WHERE `edu_level` = 'GCSE/ A Levels' && `service_id` =5
ORDER BY `paper_stand` , `deadline`

私はMYSQLを使用しています

結果を目的の形式で取得する方法を説明してくれる人はいますか?

ありがとう

4

3 に答える 3

1

JOINテーブルをそれ自体にすることができます。

SELECT a.deadline,
       a.service_id,
       a.price AS paper_stand_a,
       b.price AS paper_stand_b,
       a.edu_level
FROM price_matrix AS a JOIN price_matrix AS b
    ON a.deadline = b.deadline AND a.paper_stand = 'A' AND b.paper_stand = 'B'
GROUP BY a.deadline;

結合なしでこれを行うこともできます。MAX価格に対してNULL以外の値を取得するためだけに使用します。その部分を行うためのより良い方法がおそらくあります。

SELECT deadline,
       service_id,
       MAX(IF(paper_stand = 'A', price, NULL) AS paper_stand_a,
       MAX(IF(paper_stand = 'B', price, NULL) AS paper_stand_b,
       edu_level
FROM price_matrix
GROUP BY deadline;
于 2012-11-16T06:17:06.100 に答える
0

試す

SELECT A.deadline, A.edu_level, A.service_id, A.price as paper_standA, B.price as paper_standB
FROM (

SELECT *
FROM price_matrix
WHERE paper_stand = 'A'
) AS a, (

SELECT *
FROM price_matrix
WHERE paper_stand = 'B'
) AS b
WHERE a.service_id = b.service_id
AND b.deadline = a.deadline
于 2012-11-16T06:32:52.530 に答える
0

select で Inner Query を使用して結果を取得できます。

私は SQL クエリ ビルダーを持っていませんが、アイデアが得られるようなクエリを作成しています。

SELECT deadline, service_id, edu_level,
       (SELECT price FROM price_matrix tmp 
        WHERE pm.deadline = tmp.deadline 
          AND pm.service_id = tmp.service_id
          AND tmp.paper_stand = 'A') AS PaperStandA,
       (SELECT price FROM price_matrix tmp 
        WHERE pm.deadline = tmp.deadline 
          AND pm.service_id = tmp.service_id
          AND tmp.paper_stand = 'B') AS PaperStandB,
FROM price_matrix pm
GROUP BY deadline, service_id, edu_level
于 2012-11-16T06:16:28.000 に答える