2012-03-21 2 views
0

К примеру, у меня есть таблица:дисплей подробно данные из MySQL с помощью группы по

id  name  type   price 
123451 Park's Great Hits Music 19.99 
123452 Silly Puddy Toy 3.99 
123453 Playstation Toy 89.95 
123454 Men's T-Shirt Clothing 32.50 
123455 Blouse Clothing 34.97 
123456 Electronica 2002 Music 3.99 
123457 Country Tunes Music 21.55 
123458 Watermelon Food 8.73 

Если я хочу, чтобы выбрать самую низкую цену по типу, я использую это:

<?php 
// Make a MySQL Connection 

$query = "SELECT type, MIN(price) FROM products GROUP BY type"; 

$result = mysql_query($query) or die(mysql_error()); 

// Print out result 
while($row = mysql_fetch_array($result)){ 
    echo "The cheapest ". $row['type']. " is $" .$row['MIN(price)']; 
    echo "<br />"; 
} 
?> 

Тогда, он будет отображать:

The cheapest Clothing is $32.50 
The cheapest Food is $8.73 
The cheapest Music is $3.99 
The cheapest Toy is $3.99 

Однако, я хочу знать подробную информацию о дешевом элементе, так что он будет показывать:

The cheapest Clothing is $32.50 which is Men's T-Shirt and id is 123454 
    The cheapest Food is $8.73 which is Watermelon and id is 123458 
    The cheapest Music is $3.99 which is Electronica 2002 and id is 123452 
    The cheapest Toy is $3.99 which is SillyPuddy and id is 123452 

Пожалуйста, помогите !!

+0

Каким должен быть ответ, когда два элемента одного типа имеют самую низкую цену? Оба будут отображаться? –

+1

См. Ссылку http://stackoverflow.com/questions/2183373/mysql-group-by-two-columns –

+0

Я предполагаю, что есть столбец, который является временем ввода, если они являются той же самой дешевой ценой, Показать последние – red23jordan

ответ

0

Если вы заказываете первый то группа, которую вы должны получить то, что вы хотите:

SELECT type, price, name, id FROM products ORDER BY price DESC GROUP BY type; 
+0

будет отображать минимальную цену? – red23jordan

2

Пожалуйста, попробуйте следующий запрос

select * from products po 
where price = 
(SELECT MIN(price) FROM products pi 
where type = po.type) 

Если вы хотите добавить компонент времени (как wirtten в комментариях), запрос должен быть

select id, name, type, price, time from products po 
where price = 
(SELECT MIN(price) FROM products pi1 
    where type = po.type) 
and time = 
(SELECT MIN(time) FROM products pi2 
    where type = po.type 
    and price = po.price) 
Смежные вопросы