|
Помогите с запросом INNER JOIN | ☑ | ||
---|---|---|---|---|
0
manyak
26.07.12
✎
16:52
|
т1:
id,fld1,fld2 1,2,3 2,2,3 3,2,3 т2: id,fld1,fld2 1,2,3 2,2,3 3,2,!1! 4,2,3 соединяю две таблички по ключевому полю SELECT a.*,b.* FROM table1 as a, table2 as b where a.id=b.id альтернативный аналог: SELECT a.*,b.* FROM table1 as a INNER JOIN table2 as b on a.id=b.id выводятся обе таблички соед. по ключевику a.id=b.id 1,2,3 1,2,3 2,2,3 2,2,3 3,2,3 3,2,!1! потом хочу дополнительну выбрать только те записи - когда у них отличия в одном из полей (в данном случае fld2) ====3<>!1!==== SELECT a.*,b.* FROM table1 as a, table2 as b where a.id=b.id and a.fld2 <> b.fld2 альтернативный аналог: SELECT a.*,b.* FROM table1 as a INNER JOIN table2 as b on a.id=b.id and a.fld2 <> b.fld2 так вот вторые запросы выдаю пустую выборку, хотя видно что отличия есть ====3<>!1!==== и должен быть след. результат: 3,2,3 3,2,!1! почему не робят вторые запросы? как после соединения еще наложить доп условия когда у них различия есть в опр. нужном мне поле? |
|||
1
Нуф-Нуф
26.07.12
✎
16:53
|
че, без решения этой задачи кредит на логан2 не дают?
|
|||
2
manyak
26.07.12
✎
16:55
|
эт не тот маньяк если что :)
|
|||
3
manyak
26.07.12
✎
16:55
|
не лысый :)
|
|||
4
Ненавижу 1С
гуру
26.07.12
✎
16:57
|
(3) не отмазывайся
|
|||
5
manyak
26.07.12
✎
16:59
|
подскажие, к вечеру мозги уже припухли :)
|
|||
6
nerkadry
26.07.12
✎
17:01
|
а если сделать второй иннер джойн с таблицей т2 по условию неравенства?
|
|||
7
Ненавижу 1С
гуру
26.07.12
✎
17:02
|
врешь ты все, а fld1 к чему в задаче? что-то не договариваешь
|
|||
8
nerkadry
26.07.12
✎
17:02
|
т.е. первый иннер по равенству id, второй иннер по неравенству a.fld2 <> b.fld2
|
|||
9
Serginio1
26.07.12
✎
17:03
|
SELECT a.*,b.* FROM table1 as a INNER JOIN table2 as b on a.id=b.id
where a.fld2 <> b.fld2 |
|||
10
Ненавижу 1С
гуру
26.07.12
✎
17:03
|
(9) а какая разница?
|
|||
11
manyak
26.07.12
✎
17:03
|
либо примерчик, есть две таблицы допустим:
Продажи_план (номенклатура, кол-во, прочие поля) Продажи_факт (номенклатура, кол-во, прочие поля) нужно соединить по номенклатуре и вывести где кол-во не совпадает |
|||
12
rs_trade
26.07.12
✎
17:03
|
где то банальная ошибка. при таких данных и запросе, должна выдаваться строка 3,2,3 3,2,1
|
|||
13
manyak
26.07.12
✎
17:04
|
(8) да
|
|||
14
spock
26.07.12
✎
17:05
|
(12)+1
|
|||
15
manyak
26.07.12
✎
17:05
|
(12) делаю запрос ADO к двум листам из разных книг(файлов)
простое соединение выводит обе таблички видно различие в одном из полей, когда добавляю условие - типа второй иннер- выдает 0 |
|||
16
manyak
26.07.12
✎
17:08
|
эксель имеется ввиду.
a.[fld] <> b.[fld] Различия есть - но не выдаются почему-то |
|||
17
acsent
26.07.12
✎
17:10
|
косяк где-то в другом месте не в запросе
|
|||
18
acsent
26.07.12
✎
17:10
|
может где нулл затесался?
|
|||
19
manyak
26.07.12
✎
17:11
|
|
|||
20
rs_trade
26.07.12
✎
17:12
|
(16) может имена полей fld не катят? берет какие нить две левые пустые ячейки.
|
|||
21
manyak
26.07.12
✎
17:20
|
раз синтаксис правильный - бум ковырять дальше
|
|||
22
nerkadry
26.07.12
✎
17:22
|
(21) чем тебя (9) не устраивает
|
|||
23
vinogradъ
26.07.12
✎
17:25
|
(19) если с join-ом и where переписАть?
|
|||
24
manyak
26.07.12
✎
17:28
|
(22)
SELECT * FROM [c:\Таблица_до.xls].[Запросы$] as a INNER JOIN [c:\Таблица_после.xls].[Запросы$] as b ON b.[№]=a.[№] where b.[ZZZZ] <> a.[ZZZZ]
тож ноль записей выводит, пробывал |
|||
25
manyak
26.07.12
✎
17:31
|
беру один файл "после", удаляю в столбце ZZZZ в одной ячейке значение - делаю отличия, сохраняю его как файл "до" - делаю запрос - в выборке 0 записей
|
|||
26
manyak
26.07.12
✎
17:42
|
ZZZZ
2 3 4 5 ZZZZ 2 3 xb 5 результат не дает, в выборке 0, отличие 4<>xb ZZZZ 2 3 4 5 ZZZZ 2 3 4444 5 результат есть, 4<>4444 т.е. не хочет сравнивать если типы разные, почему? т.е. тип общий с числовым не сравнивает, как то преобразовать все в тексту может попробывать |
|||
27
manyak
26.07.12
✎
17:43
|
у столбца ZZZZ у всех ячеек в обоих вариантах тип "Общий" стоит
|
|||
28
manyak
26.07.12
✎
17:44
|
дровишки ADO не робят получается как надо?
|
|||
29
Serginio1
26.07.12
✎
17:51
|
Это скорее не к АДО нужни притензии а к IMEX=1 когда в ячейке может быть что угодно. Это не соотносится с БД, где поля типизированны. Кстати для интереса сделай запрос с IMEX=0
|
|||
30
manyak
26.07.12
✎
17:53
|
пробывал, не помогает, нам же однозначно IMX=1 чтоб как текст все распознавал
|
|||
31
Serginio1
26.07.12
✎
18:06
|
Ну тогда и сравнивай в рукопашную либо типизируй колонки
|
|||
32
hhhh
26.07.12
✎
18:06
|
(30) может как-то: NOT ( b.[ZZZZ] = a.[ZZZZ])
|
|||
33
manyak
26.07.12
✎
18:09
|
(31) так и придется, просто хотелось красиво решить задачу
(32) попробуем |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |