Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Очередной вопрос по SQL

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
nerv
Отправлено: 02 Мая, 2013 - 12:30:48
Post Id



Посетитель


Покинул форум
Сообщений всего: 407
Дата рег-ции: Февр. 2013  
Откуда: Россия


Помог: 9 раз(а)




Всем привет!

Не хватает мозга, решил обратиться за помощью Улыбка

Есть таблица вида

id | description | brend | model
-------------------------------- ---------------
400002437 | airbag | TOYOTA | COROLLA
400002438 | airbag | TOYOTA | COROLLA
500000304 | airbag | HONDA | STREAM
500000526 | airbag | TOYOTA | CHASER
600001307 | airbag | TOYOTA | IPSUM
600001324 | airbag | TOYOTA | PROBOX
000003614 | airbag | SUZUKI | CULTUS
000003675 | airbag | HONDA | FIT
000005973 | airbag | HONDA | CIVIC
000002730 | airbag | HONDA | HRV
000002882 | airbag | HONDA | FIT
000002901 | airbag | SUZUKI | CULTUS
000005869 | airbag | TOYOTA | GAIA
000005886 | airbag | TOYOTA | PROBOX
000005922 | airbag | TOYOTA | MARKII
000005971 | airbag | HONDA | CIVIC
000010164 | airbag | TOYOTA | HARRIER
000010203 | airbag | TOYOTA | NOAH
000010235 | airbag | TOYOTA | NOAH

надо получить

id | description
-------------------------------- ---------------
null | HONDA
null | !CIVIC
null | !!airbag
000005973 | airbag HONDA CIVIC
000005971 | airbag HONDA CIVIC
null | !FIT
null | !!airbag
000003675 | airbag HONDA FIT
000002882 | airbag HONDA FIT


На данный момент реализовал через переменные в коде, и все это происходит долго и не красиво. Как происходит:
- выбираю уникальные brend
-- затем для каждого brend уникальные model
--- далее для каждой model уникальные description
---- после чего id для каждого description

Т.е. вложенные циклы.

Вопрос: возможно ли это реализовать в SQL (без привязки к определенному яп)? Если да, то как?
Или как сделать аналогичную выбоку правильнее и быстрее?

Важно: это происходит НЕ в mysql. Однако, концепции никто не отменял )


Спасибо.

(Отредактировано автором: 02 Мая, 2013 - 12:37:59)



-----
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
 
 Top
LIME
Отправлено: 02 Мая, 2013 - 12:35:53
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




а ты уверен что именно это надо получить?(что-то не так явно)
опиши общую задачу
 
 Top
nerv
Отправлено: 02 Мая, 2013 - 12:39:43
Post Id



Посетитель


Покинул форум
Сообщений всего: 407
Дата рег-ции: Февр. 2013  
Откуда: Россия


Помог: 9 раз(а)




LIME пишет:
а ты уверен что именно это надо получить?

да

LIME пишет:
опиши общую задачу

из таблицы А сделать выборку в виде таблицы Б (в идеале)


-----
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
 
 Top
LIME
Отправлено: 02 Мая, 2013 - 12:43:20
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




нет ...я просил более общую...для ЧЕГО это надо сделать?
(Добавление)
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT DISTINCT NULL col1,brend col2 FROM tbl
  2. UNION
  3. SELECT DISTINCT  NULL col1,CONCAT('!',model) col2 FROM tbl
  4. UNION
  5. SELECT DISTINCT  NULL col1,CONCAT('!!',description) col2 FROM tbl
  6. UNION
  7. SELECT id col1,CONCAT(brend ,' ',model,' ',description) col2 FROM tbl
ну или держи
(Добавление)
но если это надо вывести в таком порядке как в примере то иначе
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM tbl ORDER BY brend,model,description
и уже в пыхе рулить в цикле результатом

(Отредактировано автором: 02 Мая, 2013 - 12:56:15)

 
 Top
nerv
Отправлено: 02 Мая, 2013 - 13:12:23
Post Id



Посетитель


Покинул форум
Сообщений всего: 407
Дата рег-ции: Февр. 2013  
Откуда: Россия


Помог: 9 раз(а)




LIME пишет:
нет ...я просил более общую...для ЧЕГО это надо сделать?

скажем так, я под десктоп пишу эту штуку. Банально из файла А (исходника) сделать файл Б (результат) и сохранить на диске (куда-нибудь там) в виде...

LIME, спасибо. Специфические функции (CONCAT и т.п.) заменю на то, что мне нужно.

Почему рождаются подобные вопросы? Я в sql новичок и пока плохо представляю возможности Улыбка

(Отредактировано автором: 02 Мая, 2013 - 13:13:06)



-----
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB