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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SELECT из нескольких таблиц по условию, MySQL 
:(
    Опции темы
ida
  Дата 26.4.2004, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


замужем
****


Профиль
Группа: Завсегдатай
Сообщений: 2277
Регистрация: 14.5.2002
Где: Санкт-Петербург

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



Есть Таблица1, в одном из полей которой (Поле2) находятся уникальные значения (строки). Есть Таблица2, Таблица3 и Таблица4, состоящие каждая из двух полей, первое из которых - ID, второе - строка (все значения уникальные). Есть Таблица5, связыващая три последних с первой, в которой хранятся только ID соответствующих значений. Каждая ее запись выглядит примерно так:

| ID5 | ID1 | ID2 | ID3 | ID4 |

Где столбец ID1 содержит уникальные значения, столбцы ID2, ID3, ID4 могут содержать повторяющиеся значения.

Требуется составить запрос, который бы получал из переменных (var2, var3, var4) значения ID2, ID3, ID4, по ним находил в Таблице5 соответствующие значения ID1 и выводил на экран примерно следующее:

Табл1.Поле2 | Табл1. ... | Табл2.Поле2 | Табл3.Поле2 | Табл4.Поле2 |

Причем если одна из переменных - пустая строка (""), то это означает, что нужно найти все значения соответствующего ID. Если все переменные равны "", то на экране должно появиться столько строк, сколько записей в Таблице5.

PM WWW   Вверх
jonik_Dk
Дата 26.4.2004, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я не знаю MySql, поэтому встречный вопрос тебе одним запросом это надо или можно через временные таблицы (если они есть в MySQL)
PM MAIL   Вверх
jonik_Dk
Дата 26.4.2004, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Можно попробовать так:

Переменные ты передаешь из программы и соответственно можешь проанализировать их и если они у тебя пустые поставь '*' (для условия LIKE)

Select поля... from 1,2,3,4,5
where 1.id1 in (select 5.id1 from 5
where id2 LIKE var2 and
id3 LIKE var3 and
id4 LIKE var4) and
1.id1=5.id1 and 2.id2=5.id2 and 3.id3=5.id3 and 4.id4=5.id4


Это на скорую руку, много не думая. Наверняка можно получше придумать, времени нет, но такой запрос очень долго будет работать.

Если можно то лучше через временные таблицы написать, гораздо быстрей будет работать.
Если есть временные таблицы могу написать и через временные таблицы.
Оптимизировать запрос уже сам будешь !!!


PM MAIL   Вверх
ida
Дата 26.4.2004, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


замужем
****


Профиль
Группа: Завсегдатай
Сообщений: 2277
Регистрация: 14.5.2002
Где: Санкт-Петербург

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



Я не знаю, что такое временные таблицы, и не хочу с ними ковыряться. Знаю, что можно сделать одним запросом, но конкретно в данном случае как, пока не дошло.
PM WWW   Вверх
jonik_Dk
Дата 26.4.2004, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ну а то, что я тебе предложил тебе не годиться ?
PM MAIL   Вверх
Secandr
Дата 27.4.2004, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

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



ida Пользуйся join

SELECT что-то FROM t1 LEFTJOIN t5 ON t1.pole2=t5.id1 LEFTJOIN t2 ON t2.pole1=t5.id2 и т.д. и т.п.
Добавлено @ 09:32
над всеми темами есть топик с помощью по БД, прочти его, там много интересного в том числе и про JOIN


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
GoodBoy
Дата 27.4.2004, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

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



2 jonik_Dk в MySQL, к сожалению, пока нет вложенных селектов...


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
jonik_Dk
Дата 27.4.2004, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Sorry, я не знал
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




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


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

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