|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
21.05.2008, 00:39 | #1 (permalink) |
Member
Регистрация: 21.05.2008
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
есть 4 таблицы мсакцесс 1-страны 2-этапы 3-пилоты 4-прохождение Связи такие : 1(один ко многим)2; 2(один ко многим)4; 3(один ко многим)4 надо, чтобы при выборе определенной страны (например Франция) и пилота (например Себ Лоеб) в таблице 4прохождения отображались те этапы которые имеются только в ИМЕННО этой стране! а то там отображаются все этапы всех стран , которые прошел выбранный гонщик! структура базы: http://cs1440.vkontakte.ru/u6246456/...x_f169dcc8.jpg |
21.05.2008, 00:39 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Ваша проблема будет решаться значительно легче, если ознакомиться с похожими темами Помогите с задачками плиз Плиз, помогите с оценкой стоимости Помогите кто-нить с прогой на С плиз!!! |
21.05.2008, 11:38 | #3 (permalink) |
Member
Регистрация: 26.03.2007
Сообщений: 89
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 17
|
SELECT Etapy.Код_этапа, Etapy.№_этапа, Etapy.Дата_прохождения, Etapy.Длина_этапа, Etapy.Фото, Etapy.Код_стр
FROM Etapy, Strana, dr_dannie, Prohojdenie WHERE Etapy.Код_этапа=Prohojdenie.Код_этапа, Etapy.Код_стр=Strana.Код_стр, dr_dannie.Код_стр=Strana.Код_стр, Prohojdenie.№машины=dr_dannie.№_машины, Strana.Название="Франция", dr_dannie.Пилот="Себ Лоеб" Кажется вот так. И лучше русские имена полей не использовать. На латинице пиши как и название таблиц. |
21.05.2008, 12:04 | #4 (permalink) | |
Member
Регистрация: 21.05.2008
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
подправил ссылку на картинку
http://pikucha.ru/6523/структура%20базы.JPG to Призрак не работает :( пробовал следуюший код Цитата:
|
|
21.05.2008, 17:42 | #5 (permalink) | |
Member
Регистрация: 21.05.2008
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Цитата:
|
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
21.05.2008, 19:00 | #6 (permalink) |
Member
Регистрация: 26.03.2007
Сообщений: 89
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 17
|
тьфу ты. в секции WHERE вместо "and" запятые повставлял. Вот что значит писать запрос когда дергают. Я собственно писал по общим правилам SQL, возможно в акцессе другой синтаксис, хотя вряд-ли. Попробуй сделать такой ситаксис:
ADOQuery5.Active:=false; ADOQuery5.SQL.Clear; ADOQuery5.SQL.Add('SELECT et.*, st.`Название`, dd.`Пилот`'); ADOQuery5.SQL.Add('FROM Etapy et, Strana st, dr_dannie dd, Prohojdenie pr'); ADOQuery5.SQL.Add('WHERE et.`Код_этапа`=pr.`Код_этапа` AND et.`Код_стр`=st.`Код_стр` AND dd.`Код_стр`=st.`Код_стр` AND pr.`№машины`=dd.`№_машины` AND st.`Название`="'+dbedit1.text+'" AND dd.`Пилот`="'+dbedit5.text+'"'); ADOQuery5.Open; Такой синтаксис будет работать на MySQL но не уверен что на акцесе будет. Так что правь синтаксис. И не надо игнорировать WHERE, его достаточно тут. И блин, на будущее используй латиницу в названиях полей. Переименовать их можно позже в программе, а источников глюков будет меньше. |
21.05.2008, 19:13 | #7 (permalink) |
Member
Регистрация: 21.05.2008
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
спасиб большое
буду пробовать, только не совсем понимаю зачем использовать таблицу Dr_Dannie ? надо выборку делать в таблице прохождение! допустим, я выбираю страну. в ней есть этапы и пилот прошел эти этапы. в таблице этапы храняться просто перечень этапов в стране и их характеристика! а в таблице проходжение храниться время, за которое пилот проехал этап. так что суть вот в чем: 1 выбираю страну (в которой сожержаться этапы) 2 выбираю пилота 3 данные в таблице прохождение отображаются только по тем этапам, которые есть в выбранной стране |
22.05.2008, 10:27 | #8 (permalink) |
support
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,794
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
|
Народ, а разве в сложных условиях части условий в скобки уже заключать не нужно?
__________________
Убить всех человеков! |
22.05.2008, 16:02 | #9 (permalink) | |
Member
Регистрация: 26.03.2007
Сообщений: 89
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 17
|
ммм... замени Dr_Dannie на Car. Только вот объясни мне нафига ты дублировал пилота в двух таблицах, если он к машине все равно привязан?
Цитата:
итого: ADOQuery5.Active:=false; ADOQuery5.SQL.Clear; ADOQuery5.SQL.Add('SELECT et.*, st.`Название`, car.`Пилот`'); ADOQuery5.SQL.Add('FROM Etapy et, Strana st, car, Prohojdenie pr'); ADOQuery5.SQL.Add('WHERE (et.`Код_этапа`=pr.`Код_этапа`) AND (et.`Код_стр`=st.`Код_стр`) AND (car.`№_машины`=pr.`№_машины`) AND (st.`Название`="'+dbedit1.text+'") AND (car.`Пилот`="'+dbedit5.text+'")'); ADOQuery5.Open; |
|
14.06.2008, 13:36 | #10 (permalink) |
Member
Регистрация: 21.05.2008
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Призрак, спасибо большое! все работает :)
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|