|
|
|
Представление
|
|||
|---|---|---|---|
|
#18+
Всем дорого дня. Вопрос. Не могу понять почему по запросу SELECT Fio_l.familia, Sotr_l.familia AS familia2, Fio_l.checked,; Sotr_l.num; FROM ; fio_l Fio_l ; INNER JOIN sotr_l Sotr_l ; ON Fio_l.checked = Sotr_l.num выводит по четыре раза запись. Искал по форуму, но только так и не понял. Если не сложно поясните в чем проблема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 10:14 |
|
||
|
Представление
|
|||
|---|---|---|---|
|
#18+
VictorSKВсем дорого дня. Вопрос. Не могу понять почему по запросу SELECT Fio_l.familia, Sotr_l.familia AS familia2, Fio_l.checked,; Sotr_l.num; FROM ; fio_l Fio_l ; INNER JOIN sotr_l Sotr_l ; ON Fio_l.checked = Sotr_l.num выводит по четыре раза запись. Искал по форуму, но только так и не понял. Если не сложно поясните в чем проблема. Посмотри - либо в fio_l, либо в sotr_l есть дублированные записи. Вот результат тебе и выдается... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 10:18 |
|
||
|
Представление
|
|||
|---|---|---|---|
|
#18+
Нет дублей это однозначно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 10:19 |
|
||
|
Представление
|
|||
|---|---|---|---|
|
#18+
VictorSKНет дублей это однозначно. Тогда тестовый пример в студию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 10:25 |
|
||
|
Представление
|
|||
|---|---|---|---|
|
#18+
VictorSKПример чего именно? Создания двух курсоров + заполнения двумя-тремя контрольными записями + Select показывающий проблему дублирования в выборке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 10:31 |
|
||
|
Представление
|
|||
|---|---|---|---|
|
#18+
Вы хоти сказать, что для нормального представления нужно создавть курсор на каждую таблицу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 10:45 |
|
||
|
Представление
|
|||
|---|---|---|---|
|
#18+
VictorSKВы хоти сказать, что для нормального представления нужно создавть курсор на каждую таблицу? Нет. Что бы понять проблему надо увидеть, что Вы делаете и что не получается, поэтому нужен контрольный пример. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 10:53 |
|
||
|
Представление
|
|||
|---|---|---|---|
|
#18+
Таблица fio содержить поля: familia, name, otch, checked (это поле содержить уникальный ключ сотрудника, который работал с данным клиентом), таблица sotr: num (ключ сотрудника), familia, name, otch. Я хотел стелать чтобы в запросе на против каждого клиента стояла фамилия сотрудника, как при помощи relation, но данную функцию использовать не хочу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 10:55 |
|
||
|
Представление
|
|||
|---|---|---|---|
|
#18+
VictorSKТаблица fio содержить поля: familia, name, otch, checked (это поле содержить уникальный ключ сотрудника, который работал с данным клиентом), таблица sotr: num (ключ сотрудника), familia, name, otch. Я хотел стелать чтобы в запросе на против каждого клиента стояла фамилия сотрудника, как при помощи relation, но данную функцию использовать не хочу. Вас же просят привести исходные данные и результаты работы запроса, чтобы мы могли понять есть ли дублирование записей или нет ... По простому можно сказать, что у Вас связь между таблицами "иногие-к-одному", т.е. много клиентов обслуживал один и тот же сотрудник. И, в результате запроса, данные по содруднику в результирующей таблице будут дублироваться... Это вполне нормально.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 11:08 |
|
||
|
Представление
|
|||
|---|---|---|---|
|
#18+
В таком случае как этого избежать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 11:10 |
|
||
|
Представление
|
|||
|---|---|---|---|
|
#18+
VictorSKТаблица fio содержить поля: familia, name, otch, checked (это поле содержить уникальный ключ сотрудника, который работал с данным клиентом), таблица sotr: num (ключ сотрудника), familia, name, otch. Я хотел стелать чтобы в запросе на против каждого клиента стояла фамилия сотрудника, как при помощи relation, но данную функцию использовать не хочу. Ну вот всё вот это можно изложить в коде или его за Вас накдо написать ? Код: plaintext 1. 2. Содержание курсоров сами заполните или тоже надо написать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 11:12 |
|
||
|
Представление
|
|||
|---|---|---|---|
|
#18+
Спасибо. И это единственный вариант? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 11:16 |
|
||
|
Представление
|
|||
|---|---|---|---|
|
#18+
VictorSKВ таком случае как этого избежать? А что Вы хотите получить? Отчет о том какой сотрудник каких клиентов обслуживал? Так это Вы и получаете. А уж как дальше эту информацию отформатировать - Ваши проблемы... Почитайте-ка теорию по проектированию Баз данных: нормализация, нормальные формы, универсальное отношение... А потом, если останутся вопросы, вернемся к обсуждению... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 11:18 |
|
||
|
Представление
|
|||
|---|---|---|---|
|
#18+
Если fio_i список клиентов (поле checked - ключ сотрудника, который его обслуживает) , а sotr_l - список сотрудников (поле num - ключ сотрудника), то ваш запрос синтаксически и семантически правильный. Если вы получаете по 4 РАЗНЫЕ записи, а поле num - первичный ключ таблицы сотрудников и поля одинаковые по типу (например INT), то смотрите ваши данные в таблице клиентов. Где-то вы завели по несколько раз одного и того и того же клиента. С уважением, Алексей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 11:27 |
|
||
|
Представление
|
|||
|---|---|---|---|
|
#18+
Спасибо Алексей. Так все и есть. Только все записи таблицы дублируются 4 раза. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 11:30 |
|
||
|
Представление
|
|||
|---|---|---|---|
|
#18+
VictorSKСпасибо Алексей. Так все и есть. Только все записи таблицы дублируются 4 раза. Что? При просмотре результатов запроса в обычном browse по четыре одинаковых записи? "Не верю..."(с) Приведите-ка все-таки примеры.... Уже который раз Вас просят.... А то как-то с телепатическими способностями туго у нас... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 11:38 |
|
||
|
Представление
|
|||
|---|---|---|---|
|
#18+
Вот еще раз пример. Две таблицы: fio_l (familia, name, otch, checked) и sotr_l (num, familia, name, otch) Далее делаю следующее: SELECT Fio_l.familia, Sotr_l.familia AS familia2, Fio_l.checked,; Sotr_l.num; FROM ; fio_l Fio_l ; INNER JOIN sotr_l Sotr_l ; ON Fio_l.checked = Sotr_l.num На выходе у каждой записи 4 дубля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 11:45 |
|
||
|
Представление
|
|||
|---|---|---|---|
|
#18+
VictorSK На выходе у каждой записи 4 дубля. И где Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 12:09 |
|
||
|
Представление
|
|||
|---|---|---|---|
|
#18+
VictorSKВот еще раз пример. Две таблицы: fio_l (familia, name, otch, checked) и sotr_l (num, familia, name, otch) Далее делаю следующее: SELECT Fio_l.familia, Sotr_l.familia AS familia2, Fio_l.checked,; Sotr_l.num; FROM ; fio_l Fio_l ; INNER JOIN sotr_l Sotr_l ; ON Fio_l.checked = Sotr_l.num На выходе у каждой записи 4 дубля. От Вас просили примерно следующее: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 12:10 |
|
||
|
Представление
|
|||
|---|---|---|---|
|
#18+
Возможно я не так об`яснил с самого начала. Я хочу что бы в запросе выводилось ФИО из fio_l, а в место ключа cheked ФИО из sotr_l и не важно есть так ключ или нет, тоесть вывести все записи из fio_l с заменой ключа cheked на ФИО из sotr_l. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 12:30 |
|
||
|
Представление
|
|||
|---|---|---|---|
|
#18+
VictorSKВозможно я не так об`яснил с самого начала. Я хочу что бы в запросе выводилось ФИО из fio_l, а в место ключа cheked ФИО из sotr_l и не важно есть так ключ или нет, тоесть вывести все записи из fio_l с заменой ключа cheked на ФИО из sotr_l. Это-то понятно из твоего запроса. Не понятен лишь один момент, а именно: автор выводит по четыре раза запись. Вот это и хотим у тебя выяснить... Уже на протяжении 20 постов... А ты все не "колешься" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 12:52 |
|
||
|
Представление
|
|||
|---|---|---|---|
|
#18+
Есть список клиентов и список сотрудников. В результате выполнения запроса ты получаешь список: фимилия клиента - фамилия сотрудника 1) Один сотрудник может работать с НЕСКОЛЬКИМИ клиентами? Очевидно - может. Т.е. вполне возможно что в результирующей выборке у нескольких клиентов будет отображен один и тот же сотрудник 2) РАЗНЫЕ клиенты могут иметь одну и ту же фамилию (Fio_l.familia)? Очевидно - тоже могут. Т.е. вполне возможно, что в результирующей выборке у нескольких сотрудников будет отображена одна и та же фамилия клиента 3) Могут условия 1) и 2) выполняться ОДНОВРЕМЕННО? Тоже могут! Т.е. разные клиенты имеют одну и ту же фамилию и обслуживаются одним и тем же сотрудником. Чтобы проверить это предположение сделай такой запрос: Код: plaintext Ты получишь список всех клиентов, которые имеют не пустое значение в поле checked. Т.е. это те клиенты, которые теоретически могут быть сопоставлены с сотрудниками. Видим довольно большое количество повторов. Чтобы понять, действительно ли это повторы или просто одинаковые значения необходимо добавить уникальный идентификатор записи. В данном случае, это, видимо, поле num. Код: plaintext Т.е. это просто "однофамильцы", хотя физически разные клиенты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 14:21 |
|
||
|
|

start [/forum/topic.php?fid=41&fpage=215&tid=1589972]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
14ms |
get forum data: |
4ms |
get page messages: |
82ms |
get tp. blocked users: |
2ms |
| others: | 245ms |
| total: | 427ms |

| 0 / 0 |
