Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.28;
Скачать: CL | DM;

Вниз

И снова они. SQL запросы.   Найти похожие ветки 

 
RustiK ©   (2004-02-26 12:44) [0]

Здраствуйте все.
Не судите строго.
Есть ворос... и три таблицы a(code, quantity) , b(code, quantity), с(code, quantity).
В a.codes храняться все возможные варианты записей. Мне нужно объединить эти таблицы так , чтобы мне показывало записи поля code и выводились бы только те, которые есть в  таблице b и с. Записи b.code и a.code не идетичны и могут не совпадать по порядку.
Потом отдельно далжны выводиться a.quantity, b.quantity и с.quantity.
то есть вот так

 codes  a.quantity  b.quantity  с.quantity.
1
2
3
4
.
.
.
n

две таблици соединить смог, а вот три никак. Прошу помощи.


 
Sandman25+1   (2004-02-26 12:44) [1]

Как 2 соединили? Код покажите.


 
HSolo ©   (2004-02-26 12:45) [2]

Как Вы соединяли 2 таблицы?


 
RustiK ©   (2004-02-26 12:46) [3]

вот...

SELECT a.code, a.quantity, b.quantity
FROM a INNER JOIN b ON a.code like b.code
WHERE a.code like b.code;


 
Sandman25+1   (2004-02-26 12:49) [4]

WHERE лишнее - уберите его.
like лучше заменить на =
А потом добавьте еще один INNER JOIN c ON c.code = a.code


 
HSolo ©   (2004-02-26 12:50) [5]

SELECT a.code, a.quantity, b.quantity, c.quantity
FROM a
LEFT OUTER JOIN b ON a.code like b.code
LEFT OUTER JOIN c ON a.code like c.code
WHERE not (b.quantity is null) and not (c.quantity is null)


 
Sandman25+1   (2004-02-26 12:51) [6]

[5] HSolo ©   (26.02.04 12:50)

Зачем LEFT JOIN с проверкой на существование???


 
Johnmen ©   (2004-02-26 12:53) [7]

Какой тип a.code ?


 
RustiK ©   (2004-02-26 12:57) [8]

integer


 
Johnmen ©   (2004-02-26 12:59) [9]

SELECT a.code, a.quantity, b.quantity, c.quantity
FROM a
JOIN b ON a.code=b.code
JOIN c ON a.code=c.code


 
Sandman25+1   (2004-02-26 13:00) [10]

[9] Johnmen ©   (26.02.04 12:59)

5 баллов :)

Только непонятно, что зависело от типа.


 
RustiK ©   (2004-02-26 13:01) [11]

нет не заработало выдает ошибку
говорит (missing operator) in query expression "a.code like b.code LEFT OUTER JOIN c ON a.code like c.code"


 
HSolo ©   (2004-02-26 13:01) [12]

А Johnmen ©   (26.02.04 12:59) [9] ?


 
Johnmen ©   (2004-02-26 13:03) [13]

>Sandman25+1   (26.02.04 13:00) [10]

От типа зависит выражение условия соединения.

PS А где Sandman25 ©  ? :)


 
RustiK ©   (2004-02-26 13:04) [14]

не забывайте база аксессовская


 
Johnmen ©   (2004-02-26 13:06) [15]

>не забывайте база аксессовская

Помним. А на что это влияет ?


 
Sandman25+1   (2004-02-26 13:08) [16]

[13] Johnmen ©   (26.02.04 13:03)

То есть для CHAR у него в кодах записано "1%" и "12"? Тогда тем более нужно ставить =, чтобы не нарваться на равенство "1%","12" и "%2".

Sandman25 забыл пароль, а потом у него родился сын и он решил добавить к старому нику единичку :)


 
RustiK ©   (2004-02-26 13:09) [17]

то что у него sql синтаксис немного извращенный и отличный от простого


 
RustiK ©   (2004-02-26 13:11) [18]

ставлю я равно ( = ) и все равно тоже самая ошибка


 
Johnmen ©   (2004-02-26 13:13) [19]

>модераторы

Прошу прощения за злостный оффтоп.

>Sandman25+1   (26.02.04 13:08) [16]

Если забыл, так спроси приватно у McSimm ©, он напомнит.
А 25+1 не воспринимается адекватно...:)

>RustiK ©   (26.02.04 13:09) [17]
>синтаксис немного извращенный

В чем это выражается ?


 
sniknik ©   (2004-02-26 13:15) [20]

вообщето для access простое добавление еще одного джойна не работает. надо так (как бы с вложением, и чем больше обьеденяеш тем больше скобок)
SELECT a.code, a.quantity, b.quantity, c.quantity
FROM (a INNER JOIN b ON a.code = b.code) INNER JOIN c ON a.code = c.code


 
SPIRIT ©   (2004-02-26 13:16) [21]


> RustiK ©   (26.02.04 13:01) [11]

в акцесс весь джоин надо в скобки брать
а вообще я тебе советую в самом акцесе писать запрос а потом текст запроса в делфи таскать ..
> говорит (missing operator) in query expression "a.code like
> b.code (LEFT OUTER JOIN c ON a.code like c.code)"


 
Sandman25+1   (2004-02-26 13:17) [22]

[19] Johnmen ©   (26.02.04 13:13)

Мне пароль уже не нужен. Буду очень редко появляться на сайте со следующей неделе.

Извиняюсь за offtopic.


 
sniknik ©   (2004-02-26 13:17) [23]

RustiK ©   (26.02.04 13:09) [17]
> то что у него sql синтаксис немного извращенный и отличный от простого

немного ?! %о))))


 
SPIRIT ©   (2004-02-26 13:17) [24]


> sniknik ©   (26.02.04 13:15) [20]

знал бы  - не старался


 
RustiK ©   (2004-02-26 13:21) [25]

Есть заработала. Тока при выводе запроса запрашивет какоето значение для c.quantity


 
RustiK ©   (2004-02-26 13:26) [26]

Да забыл сказать что заработало с Like в место =
и в конце добавил
WHERE not (b.quantity is null) and not (c.quantity is null);

хотя теперь не выводит значения b.quantity, которе null для c.quantity
мда...
помогите еще раз


 
Johnmen ©   (2004-02-26 13:28) [27]

>sniknik ©   (26.02.04 13:15) [20]

А неявно соединить тоже нельзя ?
Вместо джоинов WHERE a.code=b.code AND a.code=c.code


 
SPIRIT ©   (2004-02-26 13:33) [28]

надо определяться .. либо джоим .. либо where
лучше джоин !


 
RustiK ©   (2004-02-26 13:39) [29]

ясно тогда лучше джоин

а интересно можно сюда добавить дату из таблиц b и с, в а таблице даты нет


 
SPIRIT ©   (2004-02-26 13:53) [30]

select a.code,b.date,c.date
from ((a
left outer join b on a.code = b.code)
left outer join c on c.code = b.code)


 
SPIRIT ©   (2004-02-26 13:54) [31]

Мне вот кажется , что таблички можно по другому спроектировать
ты расскажи, что за база


 
SPIRIT ©   (2004-02-26 14:03) [32]

select a.code, a.quantity, b.quantity, c.quantity,b.date,c.date
from ((a
inner join b on a.code = b.code)
left outer join c on c.code = a.code)
может так ....


 
RustiK ©   (2004-02-26 14:08) [33]

Оказывается можно.

Все тема закрыта. Всем огромное спасибо, особенно SPIRIT ©


 
RustiK ©   (2004-02-26 14:13) [34]

Да вот база материалы приход расход

сама загвостка : вывод баланса с (допустим ) 1 числа по 30.
существующие поля

code (initial balans value) (store in value) (store out value) (balans value)

загвостка в том что баланс просчитывается с определенного дня до друго определенного и вот баланс на первое число надо сначала вычислить, потом вхоядящее количество материала надо вычислить и конечный баланс на 30 число


 
RustiK ©   (2004-02-26 14:14) [35]


> существующие поля

ошибка
имеллось в виду в отчете выводятся


 
sniknik ©   (2004-02-26 14:16) [36]

Johnmen ©   (26.02.04 13:28) [27]
> А неявно соединить тоже нельзя ?
> Вместо джоинов WHERE a.code=b.code AND a.code=c.code
можно, но сам понимаеш никакой гибкости, left/right join не сделаеш (такие "феньки" как a.code*=b.code или += / =+, сдесь не проходят).



Страницы: 1 вся ветка

Текущий архив: 2004.03.28;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.021 c
1-1079044735
Kneaz
2004-03-12 01:38
2004.03.28
dobaviti svojstvo CheckBox v komponent TreeView


1-1078944615
zep
2004-03-10 21:50
2004.03.28
окруление


4-1074070641
chernoruk
2004-01-14 11:57
2004.03.28
Как развернуть чужое окно из трея?


14-1077790429
Иксик
2004-02-26 13:13
2004.03.28
Знатокам шахматного софта


1-1078979039
Andrey V.
2004-03-11 07:23
2004.03.28
Автопереход на следующий объект