Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MySQL - помогите сделать запрос. обьединение таблиц в запросе

Ответить
Настройки темы
MySQL - помогите сделать запрос. обьединение таблиц в запросе

Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


есть три таблицы (количество таблиц может варьироваться, но сейчас это не важно, скажем только три) вот стоблцы их (не все) :

1 таблица agt :
agtID
crpID
staID
slrsysID

2 таблица sta :
staID
crpID
slrsysID
constID
regID

3 таблица crp :
crpID
slrsysID


но помимо указаных столбцов есть ещё много других, которые тоже будут, в конечном итоге, участвовать в обработке пхп. но сейчас не об этом. так вот задача такова - выбрать из всех трёх таблиц ВСЕ записи по slrsysID. возможно ли такое сделать? и чем лучше пользоваться. слышал о принцепах JOIN да только не вкурил как сделать сам запрос. т.к. фака подходящего не нашлось. с union'ом тоже баловался, только не получилось у меня создать "нужный" мне запрос. подскажите плз.

PS: хотелось бы увидеть два варианта. когда едёт "полная выборка". и когда идёт "исключения" если запись есть в другой таблице, вроде "исключения" через JOIN можно делать.
PS2: не бейте сильно если чего "гоню".

Отправлено: 14:52, 22-12-2008

 

Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


running-frag, как я уже не раз советовал, сделайте так:
создайте чистую базу ms access, создайте там 3 ваши таблицы с полями, забейте в них по 2-3 записи.
ПОтом идите в запросы и в конструкторе добавьте ваши таблицы. Экспериментируйте со связями. Потом вид - SQL и увидите свой запрос. Я тоже сейчас покумекаю.
С UNION не получится, т.к. у вас разное количество столбцов в таблицах.

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)

Это сообщение посчитали полезным следующие участники:

Отправлено: 02:52, 23-12-2008 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


предварительные тесты показали, что такую выборку сделать скорее всего не получится, т.к. в результирующем запросе выводятся перемноженные строки, т.е. если у меня в первой таблице 2 записи, во второй 3, в третьей 4, то получим на выходе 2*3*4 = 24 строки вместо 9. Попробуйте, может у вас получится что нибудь

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 03:11, 23-12-2008 | #3


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
SELECT agt.*, crp.* FROM agt, crp WHERE agt.crpID = '123456' && agt.crpID = crp.crpID
хоть в результате получим несколько одинаковых столбцов, получилось вот так, будем думать дальше как выбрать "без повторений" или "обьеденить" повторяющиеся стоблцы... ^_^

Отправлено: 12:15, 23-12-2008 | #4


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Цитата running-frag:
будем думать дальше как выбрать "без повторений" или "обьеденить" повторяющиеся стоблцы... »
select distinct agt.*, crp.* FROM agt, crp WHERE agt.crpID = '123456' && agt.crpID = crp.crpID
либо
select distinctrow agt.*, crp.* FROM agt, crp WHERE agt.crpID = '123456' && agt.crpID = crp.crpID

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 01:07, 24-12-2008 | #5


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Delirium:
Цитировать »
Цитата Delirium:
select distinct agt.*, crp.* FROM agt, crp WHERE agt.crpID = '123456' && agt.crpID = crp.crpID
либо
select distinctrow agt.*, crp.* FROM agt, crp WHERE agt.crpID = '123456' && agt.crpID = crp.crpID »
честно говоря я не увидел вообще никакой разницы что с distinct, что без ... т.е. у меня как выберало два одинаковых столбца (crpID и crpID_1) так и выбирает. почитал фак distinct хорошо работает если есть одна таблица (дев фак ) а вот как это дело сделать с двумя.. =\

PS: в факе есть строка "SELECT DISTINCT t1.a FROM t1, t2 where t1.a=t2.a;" пытался по подобию делать, пока что не получается, у кого есть идеи слушаем.....

Отправлено: 11:05, 24-12-2008 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MySQL - помогите сделать запрос. обьединение таблиц в запросе

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
7 / 2008 R2 - [решено] Запрос на смену пароля, помогите разобраться duba Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista 13 20-07-2011 19:38
Прочие БД - Запрос на выборку из двух таблиц! st031 Программирование и базы данных 1 05-06-2009 17:02
MySQL - помогите сформулировать запрос Oldschool Программирование и базы данных 2 29-11-2007 22:56
Как сделать запрос на PHP?? JS Вебмастеру 3 30-10-2004 23:35
Можно ли использовать like в динам. запросе Leon71 Программирование и базы данных 1 11-08-2003 14:45




 
Переход