X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Исключение повторений одного поля при запросе в MySql
Avin
Avin
Topic Starter сообщение 22.2.2012, 15:24; Ответить: Avin
Сообщение #1


Здравеньки булы!

Как всегда, столкнулся с проблемой.

Существует таблица с полями id, type, text, cost

Необходимо построить запрос так, чтобы результат был такой:

type1
text1 cost1
text2 cost2
...
type2
text3 cost3
text4 cost4
...
и т.д.

У меня получилось сделать выборку с повторением type для каждой записи, а повторения быть не должно:


$sql = "SELECT * FROM price ORDER BY type" or die("не получилось!");


Прошу помощи!
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
matroskin8
matroskin8
сообщение 22.2.2012, 16:09; Ответить: matroskin8
Сообщение #2


Дамп таблицы выложите.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Avin
Avin
Topic Starter сообщение 23.2.2012, 8:36; Ответить: Avin
Сообщение #3


Вот дамп, данных немного :blink:

CREATE TABLE IF NOT EXISTS `price` (
  `id` smallint(10) NOT NULL AUTO_INCREMENT,
  `type` varchar(200) NOT NULL,
  `text` text NOT NULL,
  `cost` varchar(100) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=4;

--
-- Dumping data for table `price`
--

INSERT INTO `price` (`id`, `type`, `text`, `cost`) VALUES
(1, 'Администрирование 1С', 'Добавление нового пользователя', '240'),
(2, 'Установка и настройка ОС и ПО', 'Клонирование ОС', '520'),
(3, 'Администрирование 1С', 'Перенос данных между БД', '410');
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Светозар
Светозар
сообщение 23.2.2012, 10:51; Ответить: Светозар
Сообщение #4


похожая тема тут: http://www.masterwebs.ru/topic/9771-vopros...u-dannih-iz-bd/
Постараюсь ответить там!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
matroskin8
matroskin8
сообщение 23.2.2012, 14:46; Ответить: matroskin8
Сообщение #5


Эта тема больше относится к PHP. Кстати, аналогичную задачу решал там буквально недавно.
По базе. По хорошему не мешало бы ее нормализовать. В частности, поле type выносится в справочник. Ну да это частности :blink:
Вот код, откомментировал по максимуму:
<?php
mysql_connect("localhost", "root", "");
mysql_query("SET NAMES 'utf8'");
mysql_select_db("test");
$query = "SELECT * FROM price ORDER BY type";
$res = mysql_query($query);
$data = array();
while($row = mysql_fetch_assoc($res)){
    $data[] = $row; // получаем данные в массив
}
//print_r($data);
$group = $data[0]['type']; // выбираем первый тип и помещаем в переменную group
echo '<b>' .$group. '</b><hr>'; // выводим первый тип
/* проходимся по массиву */
foreach($data as $item){
    /* если текущий тип не совпадает с имеющимся в переменной group */
    if($group != $item['type']){
        echo '<br><b>' .$item['type']. '</b><hr>'; // то выводим новый тип
        $group = $item['type']; // и заносим новый тип в переменную group
    }
    /* если же текущий тип совпадает с имеющимся в переменной group, то цикл пропускаем */
    echo $item['text']. ' || '; // выводим текст
    echo $item['cost']. '<br>'; // выводим цену
}
?>

Результат на выходе:
Администрирование 1С
Добавление нового пользователя || 240
Перенос данных между БД || 410

Установка и настройка ОС и ПО
Клонирование ОС || 520
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Avin
Avin
Topic Starter сообщение 23.2.2012, 23:38; Ответить: Avin
Сообщение #6


ОГРОМНЕЙШЕЕ СПАСИБО!

Премного благодарен Вам matroskin8 !
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
matroskin8
matroskin8
сообщение 24.2.2012, 1:30; Ответить: matroskin8
Сообщение #7


Пожалуйста :blink:

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Мегамаркет. Скидка 1000 рублей при покупке от 5000 рублей на все, на первый заказ.
Мегамаркет. Скидка 1000 рублей при покупке от 5000 рублей на все, на п
6 stu999 1551 21.3.2024, 20:45
автор: stu999
Открытая тема (нет новых ответов) Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery
Разработка сайтов и сервисов под-ключ
0 alexey 1170 24.11.2023, 14:46
автор: alexey
Открытая тема (нет новых ответов) Получил странную ссылку при линкбилдинге
Как поведет себя поиск при обнаружении странной ссылке?
10 r0mZet 2178 24.10.2022, 19:23
автор: Wachowski
Горячая тема (нет новых ответов) 300 площадок под вечные ссылки на выбор: ТИЦ 20-9400, PR 0-6, ЯК, DMOZ. Скидки при пакетном заказе!
65 inkon 30255 19.7.2022, 13:41
автор: Funoman
Горячая тема (нет новых ответов) тИЦ отменили! Новый показатель Яндекса ИКС! Лучшие площадки под размещение. Бесплатное написание статей при любом заказе.
Эксклюзивное предложение. Успей получить написание статей БЕСПЛАТНО
71 VIMstat 78310 21.6.2022, 9:38
автор: VIMstat


 



RSS Текстовая версия Сейчас: 28.3.2024, 23:57
Дизайн