SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 24.07.2009 16:05:32

osv
Участник
Зарегистрирован: 24.07.2009
Сообщений: 2

Создать запрос с группировкой

Доброго времени суток !

Есть таблица со следующим содержанием:


]Название товара    Цена1    Цена2    Цена3    Цена4    Код    Категория
---------------------    --------    --------    -------    -------    -----    ------------
Нас станция MQ 3    14988,46622    16487,31284    18136,04412    19949,64853     46    Насосные станции
Нас станция 304    17750,16486    19525,18135    21477,69949    23625,46944     47     Насосные станции
Нас станция  305    18085,89527    19894,4848    21883,93328    24072,3266    48    Насосные станции

Насос РW-175 ЕА            4781,7        5259,87        5785,857        6364,4427        25    Насосы
Насос МНI 404 DМ                15592,5        17151,75        18866,925        20753,6175    24    Насосы
Насос  65/15 DM        41439,52703    45583,47973    50141,8277    55156,01047    23    Насосы

Гайки для насоса            210,7094595    231,7804054    254,9584459    280,4542905    40    Принадлежности к насосам
Гайки для насоса            505,7027027    556,272973    611,9002703    673,0902973    41    Принадлежности к насосам
Гибкая подводка             238,8040541    262,6844595    288,9529054    317,8481959    42    Принадлежности к насосам

Нужно построить запрос таким образом, чтобы получилось записать это в HTML так:

<table>
<tr><td colspan="7">Насосные станции</td></tr>
<tr><td>Насосная станция MQ 3</td><td>14988,46622</td><td>16487,31284</td><td>18136,04412</td><td>19949,64853</td><td>46</td><td>Насосные станции</td></tr>
<tr><td>Насосная станция HМС 304</td><td>17750,16486</td><td>19525,18135</td><td>21477,69949</td><td>23625,46944</td><td>47</td><td>Насосные станции</td></tr>
<tr><td>Насосная станция НМC 305</td><td>18085,89527</td><td>19894,4848</td><td>21883,93328</td><td>24072,3266</td><td>48</td><td>Насосные станции</td></tr>

<tr><td>Насосы</td></tr>

<tr><td>Насос РW-175 ЕА</td><td>4781,7</td><td>5259,87</td><td>5785,857</td><td>6364,4427</td><td>25</td><td>Насосы</td></tr>
<tr><td>Насос МНI 404 DМ</td><td>15592,5</td><td>17151,75</td><td>18866,925</td><td>20753,6175</td><td>24</td><td>Насосы</td></tr>
<tr><td>Насос TOP-S 65/15 DM</td><td>41439,52703</td><td>45583,47973</td><td>50141,8277</td><td>55156,01047</td><td>23</td><td>Насосы</td></tr>

<tr><td>Принадлежности к насосам</td></tr>

<tr><td>Гайки для насоса</td><td>210,7094595</td><td>231,7804054</td><td>254,9584459</td><td>280,4542905</td><td>40</td><td>Принадлежности к насосам</td></tr>
<tr><td>Гайки для насоса</td><td>505,7027027</td><td>556,272973</td><td>611,9002703</td><td>673,0902973</td><td>41</td><td>Принадлежности к насосам</td></tr>
<tr><td>Гибкая подводка</td><td>238,8040541</td><td>262,6844595</td><td>288,9529054</td><td>317,8481959</td><td>42</td><td>Принадлежности к насосам</td></tr>
</table>


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

   print '<table>';
    $r = mysql_query("SELECT * FROM price ORDER BY category") or die('<h1>Ошибка запроса</h1>');
    if ($row = mysql_fetch_array($r)) {
        do {
            print '<tr><th colspan="7">'.$row['category'].'</th></tr>
<tr style="background: #ededed;" onmouseover="this.style.backgroundColor=\'#f9f9f9\';" onmouseout="this.style.backgroundColor=\'#ededed\';"><td>'
.$row['name'].'</td><td>'.$row['price1'].'</td><td>'.$row['price2'].'</td><td>'.$row['price3'].'</td><td>'.$row['price4'].'</td><td>'.$row['code'].'</td><td>'.$row['category'].'</td></tr>';
        }
        while ($row = mysql_fetch_array($r));
    }
    else {
        print '<tr><td colspan="7"><h3>Нет товаров в каталоге</h3></td></tr>';
    }
    print '</table>
</form>'
;

Отредактированно osv (24.07.2009 16:12:38)

Неактивен

 

#2 24.07.2009 16:59:30

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Создать запрос с группировкой

Сначала вы выбирате категории:

select category from price group by category;

затем в цикде для каждой категории всю остальную информацию:
select * from price where category = '{$row["category"]}';

Неактивен

 

#3 24.07.2009 22:52:16

osv
Участник
Зарегистрирован: 24.07.2009
Сообщений: 2

Re: Создать запрос с группировкой

Спасибо !
Получилось так:

   print '<table>';
    $r1 = mysql_query("SELECT category FROM price GROUP BY category") or die('<h1>Ошибка запроса</h1>');
    if ($row1 = mysql_fetch_array($r1)) {
        do {
            print '<tr><th colspan="7">'.$row1['category'].'</th></tr>';
            $r2 = mysql_query("SELECT * FROM price WHERE category = '{$row1["category"]}'") or die('<h1>Ошибка запроса</h1>');
            while ($row2 = mysql_fetch_array($r2)) {
                print '<tr style="background: #ededed;" onmouseover="this.style.backgroundColor=\'#f9f9f9\';" onmouseout="this.style.backgroundColor=\'#ededed\';"><td>'.$row2['name'].'</td><td>'.$row2['price1'].'</td><td>'.$row2['price2'].'</td><td>'.$row2['price3'].'</td><td>'.$row2['price4'].'</td><td>'.$row2['code'].'</td><td>'.$row2['category'].'</td></tr>';
            }
        }
        while ($row1 = mysql_fetch_array($r1));
    }
    else {
        print '<tr><td colspan="7"><h3>Нет товаров в каталоге</h3></td></tr>';
    }
    print '</table>';

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson