Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов
Перезагрузить страницу Помогите, плиз, с выборкой
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Chel Chel вне форума
Новичок
 
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.05.2008
По умолчанию 21.05.2008, 00:39

народ, ПОМОГИТЕ ,ПЛИЗ, сделать выборку... ОЧЕНЬ нужно... прога горит!!!!!
есть 4 таблицы мсакцесс
1-страны
2-этапы
3-пилоты
4-прохождение
Связи такие : 1(один ко многим)2; 2(один ко многим)4; 3(один ко многим)4
надо, чтобы при выборе определенной страны (например Франция) и пилота (например Себ Лоеб) в таблице 4прохождения отображались те этапы которые имеются только в ИМЕННО этой стране!
а то там отображаются все этапы всех стран , которые прошел выбранный гонщик!
структура базы:
http://cs1440.vkontakte.ru/u6246456/...x_f169dcc8.jpg
Ответить с цитированием
  (#2 (permalink)) Старый
bubuka bubuka вне форума
Member
 
Аватар для bubuka
 
Сообщений: 985
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 23.01.2008
Адрес: москва
По умолчанию 21.05.2008, 10:35

если там была значимая картинка то у меня ее не видно :)

Нужно написать SQL запрос?
Ответить с цитированием
  (#3 (permalink)) Старый
Призрак Призрак вне форума
Member
 
Сообщений: 80
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 26.03.2007
Адрес: Борисов
По умолчанию 21.05.2008, 11:38

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.Пилот="Себ Лоеб"


Кажется вот так. И лучше русские имена полей не использовать. На латинице пиши как и название таблиц.
Ответить с цитированием
  (#4 (permalink)) Старый
Chel Chel вне форума
Новичок
 
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.05.2008
По умолчанию 21.05.2008, 12:04

подправил ссылку на картинку
http://pikucha.ru/6523/структура%20базы.JPG

to Призрак
не работает :(

пробовал следуюший код
Цитата:
ADOQuery5.Active:=false;
ADOQuery5.SQL.Clear;
ADOQuery5.SQL.Add('Select pr.*, st."Название", cr."Пилот" from prohojdenie pr');
ADOQuery5.SQL.Add('join car cr (cr."№_машины" = pr."№_машины" and cr."Пилот" = '+dbedit5.text+')');
ADOQuery5.SQL.Add('join etapy et (et."Код_этапа" = pr."Код_этапа")');
ADOQuery5.SQL.Add('join strana st (St."Код_страны" = et."Код_страны" and st."Название" = '+dbedit1.text+')');
ADOQuery5.Active:=true;
но он бьет ошибку Project WRC.exe raised exception class EOLeException with message 'Ошибка синтаксиса в предложении FROM'. Process stopped. Use Step or Run to continue.
Ответить с цитированием
  (#5 (permalink)) Старый
Chel Chel вне форума
Новичок
 
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.05.2008
По умолчанию 21.05.2008, 17:42

Цитата:
Сообщение от bubuka
Нужно написать SQL запрос?
да! работаю с Delphi 7 и ADO
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Призрак Призрак вне форума
Member
 
Сообщений: 80
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 26.03.2007
Адрес: Борисов
По умолчанию 21.05.2008, 19:00

тьфу ты. в секции 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, его достаточно тут. И блин, на будущее используй латиницу в названиях полей. Переименовать их можно позже в программе, а источников глюков будет меньше.
Ответить с цитированием
  (#7 (permalink)) Старый
Chel Chel вне форума
Новичок
 
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.05.2008
По умолчанию 21.05.2008, 19:13

спасиб большое
буду пробовать, только не совсем понимаю зачем использовать таблицу Dr_Dannie ?

надо выборку делать в таблице прохождение!
допустим, я выбираю страну. в ней есть этапы и пилот прошел эти этапы. в таблице этапы храняться просто перечень этапов в стране и их характеристика! а в таблице проходжение храниться время, за которое пилот проехал этап.
так что суть вот в чем:
1 выбираю страну (в которой сожержаться этапы)
2 выбираю пилота
3 данные в таблице прохождение отображаются только по тем этапам, которые есть в выбранной стране
Ответить с цитированием
  (#8 (permalink)) Старый
AlexZir AlexZir вне форума
Member
 
Аватар для AlexZir
 
Сообщений: 1,971
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 19.08.2007
Адрес: Зея
По умолчанию 22.05.2008, 10:27

Народ, а разве в сложных условиях части условий в скобки уже заключать не нужно?
Ответить с цитированием
  (#9 (permalink)) Старый
Призрак Призрак вне форума
Member
 
Сообщений: 80
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 26.03.2007
Адрес: Борисов
По умолчанию 22.05.2008, 16:02

ммм... замени 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;
Ответить с цитированием
  (#10 (permalink)) Старый
Chel Chel вне форума
Новичок
 
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.05.2008
По умолчанию 14.06.2008, 13:36

Призрак, спасибо большое! все работает :)
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите плиз сергей 58 Процессоры 1 29.12.2011 08:29
Помогите плиз AiratS Мониторы 2 27.11.2011 01:18
Помогите плиз!!!! Inzeragiri Любые вопросы от новичков 12 13.11.2011 22:45
ПОМОГИТЕ!!! Плиз!!!! :3 Ruby Remix Любые вопросы от новичков 45 30.08.2011 17:12
помогите плиз shappka Любые вопросы от новичков 29 12.08.2011 13:59
Помогите плиз OneoFMany Любые вопросы от новичков 9 16.05.2011 15:10
Как написать программу с автоматическолй выборкой кнопки Irenka Visual Basic 1 18.02.2011 23:56
Плиз помогите!!!!!!!не могу написать прогу,помогите Алексан Pascal 4 16.01.2011 18:12
помогите плиз! vad56 Pascal 2 26.10.2009 12:43
Как сделать масив с выборкой кнопок Areostar Visual Basic 0 18.06.2008 08:38
Помогите(плиз!) winSistem32 Prolog 0 28.05.2008 01:22
Помогите!! Плиз Amstel Техническая поддержка 2 09.09.2007 15:08



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов