|
|
|
Не могу сделать правильный запрос
|
|||
|---|---|---|---|
|
#18+
Связь многие-ко-многим между таблицами Client и ClientGroup организована с помощью таблицы ClientInGroup, в ней хранится инф-ия о вхождении клиента в группу клиентов. В форме группы клиента встала задача выбрать список клиентов, так, чтобы в нем отобразились, только те клиенты, которые еще не относятся к данной группе. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Вроде что-то этого, но LEFT JOIN не берет из таблицы Client оставшиеся записи. Конечно, это можно легко реализовать с подзапросом, но хотелось бы обойтись чистым джойном. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2002, 13:45:08 |
|
||
|
Не могу сделать правильный запрос
|
|||
|---|---|---|---|
|
#18+
SELECT Client_ID, Client_Name FROM Client LEFT JOIN ClientInGroup ON ClientInGroup_Client_ID = Client_ID WHERE ClientGroup_ID = @ClientGroup_ID and ClientInGroup_Client_ID IS NULL В MsAccess есть мастер запроса "Поиск записей в главной таблице, не имеющих подчиненных (записей)". Постройте такой запрос и посмотрите на его код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2002, 13:54:58 |
|
||
|
Не могу сделать правильный запрос
|
|||
|---|---|---|---|
|
#18+
А так ? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2002, 13:58:40 |
|
||
|
Не могу сделать правильный запрос
|
|||
|---|---|---|---|
|
#18+
Оба варианта без предиката выдают токо тех клиентов, которые уже в группе, а с предикатом вообще ни одной записи. Я прихожу к выводу, что при множественных джойнах, LEFT работает как INNER. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2002, 14:06:51 |
|
||
|
Не могу сделать правильный запрос
|
|||
|---|---|---|---|
|
#18+
select * from client where not Client_Id in (select ClientInGroup_Client_ID from ClientInGroup where ClientGroup_ID = @ClientGroup_ID) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2002, 14:07:35 |
|
||
|
Не могу сделать правильный запрос
|
|||
|---|---|---|---|
|
#18+
Код: 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. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. Это то, что надо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2002, 14:21:49 |
|
||
|
Не могу сделать правильный запрос
|
|||
|---|---|---|---|
|
#18+
2 Александр Степанов - да этот запрос возвращает правильный набор Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. совсем не одно и тоже оказывается, ведь сначала выполняется джоин а потом на него накладывается условие, вот так вот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2002, 14:29:12 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32057061&tid=1819712]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
52ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 187ms |
| total: | 299ms |

| 0 / 0 |
