Форум: "Базы";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
ВнизИ снова они. 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;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.053 c