|
Вродебы обычная выборка
|
|||
---|---|---|---|
#18+
Здравствуйте. Нужна помощь есть таблица1 с полями idrasmater(ID записи), data(дата), kol(количество1), idmater(материал1), kol1(количество2), idmater1(материал2), kol2, idmater2, kol3, idmater3, kol4, idmater4 и таблица2 с полями idmater(ID материала), matername(название материала). Мне нужно вывести в грид таблицу1 только вместо idmater, idmater1, idmater2...idmater4 нужно отображать matername из 2 таблице ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2012, 10:51 |
|
Вродебы обычная выборка
|
|||
---|---|---|---|
#18+
Mihail3, Ye так сделай SELECT из 2-х таблиц и свяжи их ID ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2012, 10:57 |
|
Вродебы обычная выборка
|
|||
---|---|---|---|
#18+
Mihail3, должен быть индекс по id у таблица2 пропиши в колонке IIF(SEEK(idmater, 'таблица2', 'id'), таблица2.matername, 'нету') ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2012, 11:05 |
|
Вродебы обычная выборка
|
|||
---|---|---|---|
#18+
select * from t1, t2 ; where t1.idmater=t2.idmater and ; t1.idmater1=t2.idmater and ; t1.idmater2=t2.idmater and ; t1.idmater3=t2.idmater and ; t1.idmater4=t2.idmater Into Cursor t3 Пустой курсор без записей только одна структура ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2012, 12:12 |
|
Вродебы обычная выборка
|
|||
---|---|---|---|
#18+
alextashkMihail3, должен быть индекс по id у таблица2 пропиши в колонке IIF(SEEK(idmater, 'таблица2', 'id'), таблица2.matername, 'нету') Для чего это я, что то не понял, объясните пожалуйста, таблица 2 это просто справочник материала ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2012, 12:27 |
|
Вродебы обычная выборка
|
|||
---|---|---|---|
#18+
Mihail3, А что все t1.idmater1,t1.idmater2,t1.idmater3,t1.idmater4 равны t2.idmater? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2012, 12:36 |
|
Вродебы обычная выборка
|
|||
---|---|---|---|
#18+
IgorNG, Ну пример table1 kol idmater kol1 idmater1 kol2 idmater1 208,8000 602 0,0000 0 78,0000 56 425,7000 447 0,0000 0 0,0000 0 500,0004 29 712,0596 238 20,0000 59 И table2 56 АК12-М2 59 ЦАМ-4-1 238 АБС 2020-30 чёрный 29 Полипропилен 21030-16Н 447 Армлен ПП ТМ 20-4УПС-901 чёрный 208 Армлен ПП ТМ 20-2-901 чёрный 15 АБС 2020-30 натуральный 16 Полипропилен дроблённый а мне в грид надо вывести таблицу 1 только вместо idmater должны отображаться названия из 2 таблицы ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2012, 13:06 |
|
Вродебы обычная выборка
|
|||
---|---|---|---|
#18+
Mihail3, Нужно JOIN использовать для выборки из двух таблиц. Help -> SELECT - SQL ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2012, 13:58 |
|
Вродебы обычная выборка
|
|||
---|---|---|---|
#18+
IgorNGMihail3, Нужно JOIN использовать для выборки из двух таблиц. Help -> SELECT - SQL Да если бы я не почитиал я бы и не посал, читал я уже так ничего и не придумал. Поэтому и пишу. Про F1 я знаю хорошо, но сейчас именно нужна помощь более опытных специалистов ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2012, 14:17 |
|
Вродебы обычная выборка
|
|||
---|---|---|---|
#18+
У тебя изначально таблица не нормализованная, поэтому стандартные средства не подходят. Раз у тебя в одной записи четыре ссылки на справочник, то в запросе справочник надо присоединять четыре раза. Как-то так: Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2012, 14:27 |
|
Вродебы обычная выборка
|
|||
---|---|---|---|
#18+
Dima T, да согласен первая таблица имеет отвратительную структура и она не должна быть такой, но ее таковой сделали до меня и непонятно почему. И поэтому приходится мучиться. Спасибо вам за помощь, только запрос который вы написали все равно выводит пустой курсор, но с еще большим количеством полей. Я его переписал, но понять не понял до конца, так как никогда не понимал что он делает. Очень много про него читал но так все равно до меня и не дошло. А есть еще какие варианты уже весь день сижу над этой выборкой... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2012, 14:51 |
|
Вродебы обычная выборка
|
|||
---|---|---|---|
#18+
Mihail3 так как никогда не понимал что он делает. Очень много про него читал но так все равно до меня и не дошло. Это я про JOIN ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2012, 14:52 |
|
Вродебы обычная выборка
|
|||
---|---|---|---|
#18+
Примеры таблиц приложи. автортак как никогда не понимал что он делает. Очень много про него читал но так все равно до меня и не дошло. Select * from t1, t2 where t1.id=t2.parentID Равносильно select * from t1 inner join t2 on t2.parentID=t1.id Может это поможет для понимания. Вообще это очень важно для работы с БД. Так что обязательно надо разобраться. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2012, 15:08 |
|
Вродебы обычная выборка
|
|||
---|---|---|---|
#18+
Reese,а если равносильно выборкам через select то зачем это? я вот уже как 4 месяца на FoxPro работаю и всегда все через Select ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2012, 15:13 |
|
Вродебы обычная выборка
|
|||
---|---|---|---|
#18+
Mihail3Dima T, да согласен первая таблица имеет отвратительную структура и она не должна быть такой, но ее таковой сделали до меня и непонятно почему. И поэтому приходится мучиться. Спасибо вам за помощь, только запрос который вы написали все равно выводит пустой курсор, но с еще большим количеством полей. Я его переписал, но понять не понял до конца, так как никогда не понимал что он делает. Очень много про него читал но так все равно до меня и не дошло. А есть еще какие варианты уже весь день сижу над этой выборкой... я запустил на твоих данных - у меня одна строчка вышла, т.к. у тебя есть нули в t1.idmater, то такая строка не выберется, т.к. нет такого материала в t2. Поэтому надо left join Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
А то что полей больше стало - замени * на список нужный, например Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2012, 15:23 |
|
Вродебы обычная выборка
|
|||
---|---|---|---|
#18+
Спасибо всем огромное. То есть нужно делать через JOIN я понял. Так как рабочий день подходит к концу а дома ни базы с MS SQL Server ни проекта программы, то буду разбираться с работой JOINа. Еще раз спасибо всем огромное ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2012, 15:28 |
|
Вродебы обычная выборка
|
|||
---|---|---|---|
#18+
авторReese,а если равносильно выборкам через select то зачем это? я вот уже как 4 месяца на FoxPro работаю и всегда все через Select Это один и тот же select но с разным способом описания join-а При явном указании join появляется возможность указать тип соединения inner, full, left/right. Применительно к фоксу есть еще один момент. При неявном указании join (т.е. соединение через from и where) фокс может "забыть" про индекс, по которому идет соединении одной из таблиц. Я на такое часто наталкивался в 6-ом фоксе при соединении более 3-х таблиц. Ну и к тому же такой код читать легче. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2012, 15:59 |
|
|
start [/forum/search_topic.php?author=daneska&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
others: | 696ms |
total: | 874ms |
0 / 0 |