Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Pomogite
|
|||
|---|---|---|---|
|
#18+
Y menya est' 2 table. V odnom 100 record v drygom 89. Prichem v oboih table est 2 fields kotorue Primary Key. Pomogite napisat query kotoraya bydet pokasuvet eti 11 row. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2001, 17:10 |
|
||
|
Pomogite
|
|||
|---|---|---|---|
|
#18+
можно сделать так : select * from table_2 where key_1 not in (select key_1 from table_1) and key_2 not in (select key_2 from table_1) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2001, 17:37 |
|
||
|
Pomogite
|
|||
|---|---|---|---|
|
#18+
kak nyshno sdelat esli y menya eti 2 fields(combinaziya costavlyet primary key) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2001, 19:45 |
|
||
|
Pomogite
|
|||
|---|---|---|---|
|
#18+
Примерно можно сделать так : select * from table_2 where convert(char(<Сколько позиций зависит от типа вашего key_1>, key_1)+ convert(char(<Сколько позиций зависит от типа вашего key_2>, key_2) not in (select convert(char(<Сколько позиций зависит от типа вашего key_1>, key_1)+ convert(char(<Сколько позиций зависит от типа вашего key_2>, key_2) from table_1) Если ключевые поля типа Char, то преобразования перед сложением делать не надо. Не очень оптимально, но надежно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2001, 06:13 |
|
||
|
Pomogite
|
|||
|---|---|---|---|
|
#18+
Извиняюсь, не учел преобразования в смайлики. ********************************************** Примерно можно сделать так : select * from table_2 where convert(char(<Сколько позиций зависит от типа вашего key_1> ) , key_1)+ convert(char(<Сколько позиций зависит от типа вашего key_2> ) , key_2) not in (select convert(char(<Сколько позиций зависит от типа вашего key_1> ) , key_1)+ convert(char(<Сколько позиций зависит от типа вашего key_2> ) , key_2) from table_1) Если ключевые поля типа Char, то преобразования перед сложением делать не надо. Не очень оптимально, но надежно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2001, 06:15 |
|
||
|
Pomogite
|
|||
|---|---|---|---|
|
#18+
Лучше делать так(если я правильно понял задачу): select * from table_100 t100 where not exists(select * from table_89 t89 where t100.key1=t89.key1 and t100.key2=t89.key2) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2001, 06:55 |
|
||
|
Pomogite
|
|||
|---|---|---|---|
|
#18+
Или так: select t100.* from table_100 t100 LEFT JOIN table_89 t89 ON t100.key1=t89.key1 and t100.key2=t89.key2 WHERE t89.key1 IS NULL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2001, 08:04 |
|
||
|
Pomogite
|
|||
|---|---|---|---|
|
#18+
Владимир Смирнов, по моему вы не правы. В вашем запросе условие WHERE t89.key1 IS NULL просто напросто игнорируется. Так всегда происходит для Left Join если по таблице справа записи отсутствуют, а их отсутствие пытаются проверить выражением is null ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2001, 08:19 |
|
||
|
Pomogite
|
|||
|---|---|---|---|
|
#18+
Уважаемый BiSas. Напишите подробнее, в чём моя неправота: синтаксис, логика или что-то ещё. Очень хотелось бы узнать Ваше мнение и подробный разбор моей ошибки, желательно с примером. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2001, 12:38 |
|
||
|
Pomogite
|
|||
|---|---|---|---|
|
#18+
Владимир Смирнов, прошу у вас прощения. Вы правы. Такое поведение как описал я, наблюдается в выражении типа select * from Table1 t1, Table2 t2 where (t1.key1 *= t2.key2) and (t2.key2 is null) А Microsoft сам не рекомендует использовать такую конструкцию. И оставленна она только для совместимости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2001, 08:28 |
|
||
|
Pomogite
|
|||
|---|---|---|---|
|
#18+
BiSas. Извинения приняты. По выражениям с использованием LEFT (RIGHT) JOIN или *=. Тут Вы совершенно правы - действительно, конструкция *= не рекомендуется. Она нестандартная и оставлена для совместимости. А LEFT (RIGHT) JOIN стандартная и её действие однозначно и предсказуемо, к тому же такое объединение иногда весьма полезно. Вот как в этом вопросе по выборке несвязанных (т.е. отсутствующих во второй таблице) записей. Первое, что приходит в голову - SELECT .. WHERE NOT EXISTS (SELECT .. ) или ..WHERE .. NOT IN (SELECT .. ) . И это правильно, универсальный подход, работает железно. Но, по моему мнению, для оптимизации запроса лучше использовать JOIN (конечно если это возможно). К тому же при этом, если сервер плохо сообразит, что с чем связывать, ему можно дополнительно указать, например LEFT HASH JOIN. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2001, 10:53 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32016975&tid=1824972]: |
0ms |
get settings: |
7ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 357ms |

| 0 / 0 |
