PHP SQL使用两个不同的值选择同一列

PHP SQL使用两个不同的值选择同一列,php,sql,join,Php,Sql,Join,所以我有两张价格表 表_01包含ID和价格,而表_02包含ID和不同组价格的额外信息 表_01 --------- id price --------- 1 300 2 300 3 300 表_02 ---------------- id group price ---------------- 1 1 50 2 1 50 2 2 100 3 1 50 我想在HTML中输出什么 --------------------------

所以我有两张价格表

表_01
包含ID和价格,而
表_02
包含ID和不同组价格的额外信息

表_01

---------
id price
---------
1  300
2  300
3  300
表_02

----------------
id group price
----------------
1    1     50
2    1     50
2    2     100
3    1     50
我想在HTML中输出什么

----------------------------------------
ID PRICE GROUP1 PRICE GROUP2 PRICE
-----------------------------------------
1   300      50         -
2   300      50        100
3   300      50         -
我已经成功地查询了除“GROUP2价格”之外的所有内容。我使用这个SQL命令

SELECT table_01.id, table_02.price AS saleprice, table_01.price
FROM table_01
LEFT JOIN table_02
ON table_01.id=table_02.id AND table_02.group= '1'

我真的不确定我将如何询问第二组。我可以很容易地将
“='1'”
转换为
“='2'”
,但我想以某种方式同时获得这两个值。

您应该使用GROUP BY语句

您应该使用GROUP BY语句

只需连接表02两次:

SELECT table_01.id, table_01.price, t02a.price price1, t02b.price price2
FROM table_01 
LEFT JOIN table_02 t02a ON table_01.id=t02a.id AND t02a.group='1' 
LEFT JOIN table_02 t02b ON table_01.id=t02b.id AND t02b.group='2'

只需将表_02连接两次:

SELECT table_01.id, table_01.price, t02a.price price1, t02b.price price2
FROM table_01 
LEFT JOIN table_02 t02a ON table_01.id=t02a.id AND t02a.group='1' 
LEFT JOIN table_02 t02b ON table_01.id=t02b.id AND t02b.group='2'
试试这个

SELECT table_01.id, table_01.price, t21.price AS 'GROUP1 PRICE',   
t22.price AS 'GROUP2 PRICE'  
FROM table_01   
LEFT JOIN table_02 t21  
ON table_01.id=t21.id AND t21.group= '1'  
LEFT JOIN table_02 t22  
ON table_01.id=t22.id AND t22.group= '2'  
试试这个

SELECT table_01.id, table_01.price, t21.price AS 'GROUP1 PRICE',   
t22.price AS 'GROUP2 PRICE'  
FROM table_01   
LEFT JOIN table_02 t21  
ON table_01.id=t21.id AND t21.group= '1'  
LEFT JOIN table_02 t22  
ON table_01.id=t22.id AND t22.group= '2'  

如果组的数量已知(且较小),则可以使用Jan Turoň的解决方案。否则你需要一个支点。您是否使用mysql、postgres…?如果组的数量已知(并且很小),那么您可以使用Jan Turoň的解决方案。否则你需要一个支点。你是否使用mysql,postgres…?我认为这不管用。GROUPBY语句不会将行转换为列。我认为这是行不通的。GROUP BY语句不会将行转换为列。太好了!工作得很有魅力!太好了:)太好了!工作得很有魅力!太多了:)