| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Базы Данных > Выбрать из одной таблицы, а значения другой |
| Автор: Igor_CH 29.8.2006, 16:01 |
| Что то я запутался, подскажите пожалуйста как сделать выборку. Первая таблица ID | Nomer | k | … | ... 1 0 1 … 2 1 1 … 3 1 1 … 4 2 1 … ……………………….. Вторая таблица ID_R | name | kp1 | kp2 | …. 0 1 имя_1 1 0 2 имя_2 0 0 3 имя_3 1 1 ………………………. около 1000 имен! ID_R это NOMER из первой таблицы + (может это и не надо) Если k = 1 , то второй таблице принадлежат имена с kp1 = 1 Если k = 2 , то второй таблице принадлежат имена с kp2 = 1 Делаю выборку по первой таблице получаю: 0 1 1 2 и т.д. Как сделать чтоб вместо цифр подставлялись имена со второй таблицы? |
| Автор: ewolf 29.8.2006, 16:24 | ||
Ну так например:
|
| Автор: Igor_CH 29.8.2006, 16:59 |
| а можно не в один запрос, в первой таблицы не только K но и много других подобных |
| Автор: ewolf 29.8.2006, 19:18 | ||
Можно. Например
Ну и т.д. Но одним запросом много быстрее |
| Автор: Igor_CH 29.8.2006, 20:44 |
| Спасибо! Буду пробывать... |
| Автор: Igor_CH 29.8.2006, 22:13 |
| Первый пример неполучится. вот полностью первая таблица id_R | para | kurs | gruppa | den | predmet | prepod | predmet_kr | prepod_kr вторая таблица id_Rpred | name_Rpred | kp1 | kp2 | kp3 | kp4 | kp5 третья таблица id_Rprep | name_Rprep | k1 | k2 | k3 | k4 | k5 Как все это сходиться: первая таблица только цифры вторая и третья таблицы: id_... - цыфра, name_... - название, к... и kp... - цифры 0 или 1 predmet и predmet_kr - равны id_Rpred prepod и prepod_kr - равны id_Rprep kurs =1 тогда k1=1 и kp1=1 (kurs=2 тогда k2=1 и kp2=1 и т.д.) - но это наверно и не важно Мне нужна выборка например по: kurs=1 и gruppa=1 - получим 25 строк (5 дней по 5 пар), вместо цыфр имена из таблицы 2 и таблицы 3 Надеюсь понятна структура. |
| Автор: cyberface 30.8.2006, 07:44 | ||
Помоему тебе нужно просто.
|
| Автор: Igor_CH 30.8.2006, 08:45 | ||
| не получается так во первых 3 таблицы во вторых table2.id_Rpred = table1.predmet table2.id_Rpred = table1.predmet_kr table3.id_Rprep = table1.prepod table3.id_Rprep = table1.prepod_kr Делаю так
Т.е. получаю запрос, а внутри еще 4 запроса (сверху показал 1) и того на 25 строк 100 запросов!!! Это же не правильно? |
| Автор: Igor_CH 30.8.2006, 15:20 |
| что правда нет других выходов кроме 100 запросов? Мне еще надо если predmet != 0, а predmet_kr=0 то выводить только predmet Добавлено @ 15:25 может как то через массив, вот только как? |
| Автор: cyberface 31.8.2006, 10:07 | ||
| >> не получается так Ну ты хотя бы скажи почему не получается Попробуй так:
И вообще, я конечно понимаю, что это дело вкуса, но я запутался в названиях ты назови все как-нибудь по проще и что бы понятно было |
| Автор: Igor_CH 1.9.2006, 09:22 | ||
Спасибо получилось.
Но это только для двух ячеек: raspis.predmet = raspis_predmet.id_Rpred raspis.prepod = raspis_prepod.id_Rprep А как сделать еще и для: raspis.predmet_kr = raspis_predmet.id_Rpred raspis.prepod_kr = raspis_prepod.id_Rprep |
| Автор: cyberface 2.9.2006, 10:15 | ||||
Спасибо на репутации не отображается Надо так:
Либо так:
Последний вариант оптимальнее, так как, на сколько я помню, в джоинах лучше не указывать никаких дополнительных условий объединения, если их можно вынести в WHERE |
| Автор: Igor_CH 11.9.2006, 09:39 | ||
| Долго не мог ответить. Коды выше у меня не хотят работать, может не так вывожу данные. Как сделать вывод результатов? Вот код который представлен выше:
|
| Автор: -=Ustas=- 11.9.2006, 10:37 |
Непонял, у тебя не работает запрос, или ты с результатом не можешь работать? |
| Автор: Igor_CH 11.9.2006, 12:17 | ||||
| Я не понял как вывести результат из такого запроса. До того как было два LEFT JOINа было понятно:
а теперь 4 как вывести 4 ячейки?
|
| Автор: Igor_CH 11.9.2006, 14:51 | ||||
| Мучил код понял так вообще нельзя. Получается что raspis_predmet дожно ровняться raspis_predmet_kr, а raspis_prepod должно ровняться raspis_prepod_kr А они не равны. Значит запрос не правильный. Для двух ячеек все понятно, все работает:
А вот как добавить raspis_predmet_kr, а raspis_prepod и raspis_prepod_kr Что то типа такого кода (он не правилен!!!)
Т.е.: raspis.predmet = raspis_predmet.id_Rpred raspis.prepod = raspis_prepod.id_Rprep и raspis.predmet_kr = raspis_predmet.id_Rpred raspis.prepod_kr = raspis_prepod.id_Rprep причем: raspis.predmet не равно raspis.predmet_kr raspis.prepod не равно raspis.prepod_kr |