Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.039 c
8-1069105502
oens
2003-11-18 00:45
2004.03.28
Как, сделать, спектроанализатор ,как в winamp e ?


1-1078556683
able
2004-03-06 10:04
2004.03.28
Как сделать нумерацию строк в TRichEdit?


6-1074427161
mihik
2004-01-18 14:59
2004.03.28
Поиск сервера в сети


9-1062407105
Spayker
2003-09-01 13:05
2004.03.28
Установка GlScene на Delphi7


7-1073742498
Veace$lav
2004-01-10 16:48
2004.03.28
Преобразование





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский