Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выбор нескольких полей таблицы 
V
    Опции темы
Ky6uk
Дата 17.3.2008, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 22.6.2007

Репутация: нет
Всего: нет



В общем суть такова:
Имеем базу MySql и таблицу. В таблице, допустим, 3 поля с названиями определенного предмета. Причем одно поле - официальное название,  а остальные два - синонимы. Необходимо вывести все названия (включая синонимы), например в алфавитном порядке. Так же необходимо учесть, что поля с синонимами могут быть пустые.
Есть вариант сперва загнать все в массив, потом уже сортировать. Хотелось бы знать можно ли это сделать на уровне MySQL.

Например:
Код

 ____________________
| row1 | row2 | row3 |
|------|------|------|
| abc  | cde  |      |
|      | aaa  | ccc  |
| efg  |      | bbb  |

Необходимо получить:
aaa
abc
bbb
ccc
cde
efg
PM MAIL ICQ Jabber   Вверх
skyboy
Дата 17.3.2008, 12:26 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



Код

SELECT `row1`
FROM `table`  as `table1`
WHERE `row1` <> ""
UNION ALL
SELECT `row2`
FROM `table`  as `table2`
WHERE `row2` <> ""
UNION ALL
SELECT `row3`
FROM `table`  as `table3`
WHERE `row3` <> ""
UNION ALL

PM MAIL   Вверх
Ky6uk
Дата 17.3.2008, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 22.6.2007

Репутация: нет
Всего: нет



Спасибо, принцип понятен. Заодно еще подобный вопрос.

Задача та же, но в таблице не 3 поля, а 500. Но выборку нужно сделать так же по трем полям row1..3. Так же необходимо учесть какое поле основное (указывается в main).

Пример:
Код

 ______________________________________________
| main | row1  | row2  | row3  | ...   | row500|
|------|-------|-------|-------|-------|-------|
| row2 | abc   | cde   |       |       |       |
| row2 |       | aaa   | ccc   |       |       |
| row3 | efg   |       | bbb   |       |       |


После запроса должно быть примерно следующее:
Код

aaa (main aaa)
abc (main cde)
bbb (main bbb)
ccc (main aaa)
cde (main cde)
efg (main bbb)

На примеры выводятся все названия предмета, а в скобках указано официальное название.
Можно реализовать данный пример одним запросом в БД? Или без дополнительного запроса не обойтись? smile 
PM MAIL ICQ Jabber   Вверх
SelenIT
Дата 17.3.2008, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 6
Всего: 401



Цитата(Ky6uk @  17.3.2008,  13:58 Найти цитируемый пост)
Задача та же, но в таблице не 3 поля, а 500.

Если эти поля еще и однотипны, то очевидно напрашивается нормализация...


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Ky6uk
Дата 17.3.2008, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 22.6.2007

Репутация: нет
Всего: нет



Спасибо всем. Решено пересмотреть структуру БД.  smile 
PM MAIL ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0721 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.