|
запрос с подзапросом
|
|||
---|---|---|---|
#18+
допустим в базе test есть 4 табл: street (с полями: id_st и st_name) , dom (с полями: id_dom, nom_dom и id_st (связанное с id_st из табл street)) , kv (id_kv, nom_kv, id_dom (связан с табл. dom)) man (id_m, name, id_kv(связь с табл. kv)) на форме есть 3 датакомбо первый отображающий из первой таблици название улиц, во вторм дома на этой улице и т.д. при клике на улицу все номера домов отображиются в датагриде, и так далее так вот как сделать чтоб при клике на улицу отображались только те дома, которые к ней относятся, в ней есть повторяющиеся названия котрые вот при таком запросе ругается: sql = "select name from man where id_kv = (select id_kv from kv where nom_kv = " & dc_kv.Text & ")" & " order by name" если нет повторений то все нормально. что надо поправить или дописать? база Акцесс ХР ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2003, 11:21 |
|
запрос с подзапросом
|
|||
---|---|---|---|
#18+
Во первых: при таком сравнение, если есть одно множество, то оно никак не может быть равно другому - это на мой взгляд самая основная ошибка. В этом случае нужно писать конструкцию Where Имя_Поля IN( подзапрос ). Второе: чтоб сделать неповторяющиеся строки, есть такое слово Distinct. Можно при равенстве использовать в подзапросе слово Distinct, тогда равенство будет верным или применить конструкцию IN. Вот собственно и все. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2003, 12:40 |
|
запрос с подзапросом
|
|||
---|---|---|---|
#18+
а синтаксис написания, хотябы приблизительный можно? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2003, 13:14 |
|
запрос с подзапросом
|
|||
---|---|---|---|
#18+
вообще, все это результат неправильно спроектированной в данном случае базы. Например, а как быть, если человек может проживать по двум, трем адресам (квартирам) и одновременно в одной квартире проживает несколько людей? Или как быть, если дом может быть расположен на двух улицах и иметь, соответственно, разные номера? От этого и все беды на уровне запросов ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2003, 14:27 |
|
запрос с подзапросом
|
|||
---|---|---|---|
#18+
хорошо, тогда как правильно спроектировать базу? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2003, 15:33 |
|
запрос с подзапросом
|
|||
---|---|---|---|
#18+
хотя с моей точки зрения, база нормальная основной поиск идет от улиц, а не от людей, но это только мое мнение, с проектированием баз я новичек. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2003, 15:36 |
|
запрос с подзапросом
|
|||
---|---|---|---|
#18+
в данном случае должно быть (как вариант): справочник Улица (id, назвУлицы) справочник Дом (id, НомерДома, ДопДанные) справочник Жилец (id, ФИО) таблица Квартира (id, КодДома, ЧислоКомнат и т.д.) таблица "связка" УлицаДом (id, КодУлицы, КодДома) таблица "связка" ЖилецКвартира (id, КодЖильца, КодКвартиры) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2003, 18:10 |
|
запрос с подзапросом
|
|||
---|---|---|---|
#18+
ну не знаю, возможно вы и правы, а представьте себе, что при заполнении базы придется давать еще и код улицам и домам, но хотя это делается один раз, можно попробовать, а если вам не трудно не моглибы вы все это показать на примере, там делов то на 5 мин, и скинуть мен по почте? (просто просьба) а справочники это имеется ввиду таблицы которые не связаны? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2003, 21:51 |
|
|
start [/forum/topic.php?fid=60&msg=32312568&tid=2170507]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
65ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 328ms |
total: | 491ms |
0 / 0 |