|
Выборка
|
|||
---|---|---|---|
#18+
помогите пожалуйста разобраться. есть таблица таб1 с полем id есть таблица таб2 тоже с полем id по этому полю их можно связать. Мне нужно в курсор вывести данные из первой таблицы, и рядом с полем id выводить поле id из таб2 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 15:14 |
|
Выборка
|
|||
---|---|---|---|
#18+
Код: sql 1.
Вместо * можно перечислить только нужные поля ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 15:19 |
|
Выборка
|
|||
---|---|---|---|
#18+
Dima T, вот, точно также я писала но выборка пустая. Значит нету таких результатов. Спасибо, просто хотела убедиться чтоя правильно делаю ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 15:20 |
|
Выборка
|
|||
---|---|---|---|
#18+
МеганFOX90просто хотела убедиться чтоя правильно делаю можно просто посмотреть в обе таблицы и понять что там нет одинаковых значений ID Подозреваю что делаешь ты все-таки неправильно. ID скорее всего означают разные вещи и связывать по ним никак не надо. Это примерно как глядя на часы вводить пин-код в банкомате. Вроде на часах 4 цифры, и пин-код 4, а не помогает ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 15:25 |
|
Выборка
|
|||
---|---|---|---|
#18+
Dima T, нет нет правильно делаю, просто в таблицах много значений больше 2000 в каждой. небольшое обновление таблицы помогло. Разобралась уже. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 15:53 |
|
Выборка
|
|||
---|---|---|---|
#18+
Помогите доработать запрос.. Код: sql 1.
Мне нужно сделать так чтобы если в Tab2 поле id пустое, то в поле fio у курсора Tab была пустая строка, а если есть поле id не пустое то как есть мой запрос выполнялся ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 16:34 |
|
Выборка
|
|||
---|---|---|---|
#18+
в общем мне нужно сделать так чтобы данные не потерялись из этого условия в моем запросе ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 16:35 |
|
Выборка
|
|||
---|---|---|---|
#18+
Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 16:41 |
|
Выборка
|
|||
---|---|---|---|
#18+
Dima T, и она будет так работать? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 16:48 |
|
Выборка
|
|||
---|---|---|---|
#18+
Dima T, ой ой ой я не так написала. Если в Tab1 поле vr пустое, то пустую строку надо, иначе как есть чтобы отобразилось ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 16:50 |
|
Выборка
|
|||
---|---|---|---|
#18+
Нет с помощью left join теряются данные. Посмотрите пож. мой код и если неправильно поправьте Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 16:56 |
|
Выборка
|
|||
---|---|---|---|
#18+
МеганFOX90 Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
бред какой-то хоть чуть-чуть представление есть что каждая команда в твоем коде делает? Попытайся осмыслить эту писанину. SCAN ... ENDSCAN - цикл-перебор по одной записи SELECT - делает выборку из таблицы, т.е. перебирает все записи за раз таблиц указанных во FROM. Вобщем твой код выполняет один и тот же запрос столько раз сколько записей в той таблице по которой SCAN и он полностью равнозначен такому коду Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 17:03 |
|
Выборка
|
|||
---|---|---|---|
#18+
МеганFOX90Нет с помощью left join теряются данные. Посмотрите пож. мой код и если неправильно поправьте Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
И чем отличаются эти два запроса? А как вы думаете, реально значение в поле изvенится? tab1.id='' А LOOP зачем в цикле SCAN...ENDSCAN Опять же, Вы пишите что Вы делаете, считая что делаете это правильно. А нужно описать задачу, которую Вы решаете, желательно с каким-то минимальным набором данных. Тогда и правильный ответ получите быстрее. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 17:05 |
|
Выборка
|
|||
---|---|---|---|
#18+
IgorNG, Думала смогу объяснить на простом примере не касаясь истинных таблиц но не получается. В общем есть две таблицы одна называется Prodazha, а другая Prodavec. В обеих таблицах есть поле id. В таблице Prodavec id это его идентификатор, а в таблице Prodazha id хранит идентификатор продавца. Ну типа этот товар продал продавец с таким ID. Теперь нужно выполнить запрос такой: Код: sql 1.
т.е мне нужно выводить полностью все данные из первой таблицы (Prodazha) и колонку id из таблицы Prodavec. Если id=id то все получается правильно. Но могут быть случаи, когда в Prodazha.id нету значения. Нужно для таких случаев выводить пустую строку, а если есть значение то выводить как и выводит мой запрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 17:42 |
|
Выборка
|
|||
---|---|---|---|
#18+
МеганFOX90IgorNG, Думала смогу объяснить на простом примере не касаясь истинных таблиц но не получается. В общем есть две таблицы одна называется Prodazha, а другая Prodavec. В обеих таблицах есть поле id. В таблице Prodavec id это его идентификатор, а в таблице Prodazha id хранит идентификатор продавца. Ну типа этот товар продал продавец с таким ID. Теперь нужно выполнить запрос такой: Код: sql 1.
т.е мне нужно выводить полностью все данные из первой таблицы (Prodazha) и колонку id из таблицы Prodavec. Если id=id то все получается правильно. Но могут быть случаи, когда в Prodazha.id нету значения. Нужно для таких случаев выводить пустую строку, а если есть значение то выводить как и выводит мой запрос. Ну так я же писал про LEFT JOIN. он как раз для этих целей и придуман. Код: sql 1.
только наверно не Prodazha.id а что-то типа Prodazha.Prodavec_id PS Настоятельно советую почитать книжку про язык SQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 17:53 |
|
Выборка
|
|||
---|---|---|---|
#18+
МеганFOX90, CREATE CURSOR prodazhi tab1 (id I) INSERT INTO prodazhi VALUES (1) INSERT INTO prodazhi VALUES (2) INSERT INTO prodazhi VALUES (3) INSERT INTO prodazhi VALUES (4) INSERT INTO prodazhi VALUES (6) INSERT INTO prodazhi VALUES (7) INSERT INTO prodazhi VALUES (8) CREATE CURSOR prodavec tab2 (id I, fio C(10)) INSERT INTO prodavec VALUES (1, "Иванов") INSERT INTO prodavec VALUES (2, "Петров") INSERT INTO prodavec VALUES (3, "Сидоров") INSERT INTO prodavec VALUES (4, "Смирнов") INSERT INTO prodavec VALUES (5, "Федосеев") INSERT INTO prodavec VALUES (6, "Пупкин") INSERT INTO prodavec VALUES (7, "Золотарев") INSERT INTO prodavec VALUES (8, "Сандунов") SELECT prodazhi.id,prodavec.* FROM prodavec left join prodazhi on prodazhi.id=prodavec.id INTO CURSOR Tab3 BROWSE ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 17:59 |
|
Выборка
|
|||
---|---|---|---|
#18+
Dima TНу так я же писал про LEFT JOIN. он как раз для этих целей и придуман. Вообще-то в данном конкретном запросе в постановке ТС нужен не Left, a Right join... Хотя можно таблицы местами переставить... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 21:56 |
|
Выборка
|
|||
---|---|---|---|
#18+
МеганFOX90 Если id=id то все получается правильно. Но могут быть случаи, когда в Prodazha.id нету значения. Нужно для таких случаев выводить пустую строку, а если есть значение то выводить как и выводит мой запрос. т.е. у продажи индентификатор продаца может быть пустой ? Тогда ни LEFT ни RIGHT JOIN не помогут. Вам надо использовать UNION. Ибо JOIN будет пропускать строки с пустым ID. prodavec ID FIO_3NK1DLE0S Вася _3NK1DLIDH Петя _3NK1DLL7H Коля prodazha ID prodavec_id tovar__3NK1DNH00 _3NK1DLE0S Печенька _3NK1DNR46 _3NK1DLE0S Варенька _3NK1DNYIN _3NK1DLL7H Вкусняшка _3NK1DO6OI _3NK1DLL7H Ням-няшка _3NK1DOLJ8 Хрень из под полы _3NK1DOTWF Еще хрень из под полы Если я правильно понял задание то в результате выполенеи запроса Код: sql 1.
должно получиться ID Tovar FIO PRODAVEC_ID_3NK1DNH00 Печенька Вася_3NK1DLE0S _3NK1DNR46 Варенька Вася_3NK1DLE0S _3NK1DNYIN Вкусняшка Коля_3NK1DLL7H _3NK1DO6OIНям-няшка Коля _3NK1DLL7H_3NK1DOLJ8Хрень из под полы _3NK1DOTWFЕще хрень из под полы Это то что хотелось ? Я только не понял, что значит фраза "Нужно для таких случаев выводить пустую строку" ? Какой смысл в пустой строке ? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 23:30 |
|
Выборка
|
|||
---|---|---|---|
#18+
thunder2, Так прошу прощения, немного пояснения. Пропуск записей будет тогда, когда в таблице PRODAZHA небудет отдельного столбца ID, а столбец PRODAVEC_ID будет называться просто ID, т.е. таблица prodazha будет такой: ID tovar_3NK1DLE0S Печенька _3NK1DLE0S Варенька _3NK1DLL7H Вкусняшка _3NK1DLL7H Ням-няшка Хрень из под полы Еще хрень из под полы Если же таблицу prodazha нормальзовать, как в примере, то вам правильно говорили использовать LEFT JOIN и запрос будет простой: Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 23:38 |
|
Выборка
|
|||
---|---|---|---|
#18+
Вот этот запрос помог выводить так как нужно. Код: sql 1.
теперь у меня в грид идет вывод thisform.grid2.Column8.ControlSource='Tab.fio' но, если нету врача выводится NULL, можно ли вместо NULL выводить например "Врач не указан"? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2012, 09:36 |
|
Выборка
|
|||
---|---|---|---|
#18+
Блин врач говорю, начиталась других постов про врачей и на врачей перешла)). Вот так пишу что-то не получается все равно Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2012, 09:44 |
|
Выборка
|
|||
---|---|---|---|
#18+
tab.fio=.NULL. так нельзя на NULL проверять. Правильно так Код: sql 1.
или так Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2012, 09:47 |
|
Выборка
|
|||
---|---|---|---|
#18+
Можно в самом запросе заменить Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2012, 09:49 |
|
Выборка
|
|||
---|---|---|---|
#18+
Dima T, Что-то я попробовала оба варианта, .NULL. все равно выводит в грид Код: sql 1.
из-за чего это может быть? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2012, 09:59 |
|
|
start [/forum/topic.php?fid=41&msg=38055304&tid=1583299]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
53ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 166ms |
0 / 0 |