Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос по запросу, как поставить дополнительное условие 
V
    Опции темы
CYBERDREAM
Дата 19.10.2007, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: нет
Всего: 28



Доброго времени суток народ  smile 
Возник следующий вопрос.  В моей БД 3 таблицы:
UID - везде первичный ключ
Код

tagstate:
UID  ..... и другие поля

Код

newread36  ( UID - внешний ключ, к tagstate)
UID     ||      antenna

Код

invoice   ( UID - внешний ключ, к tagstate)
UID     ||        pallet

Вообщем нужно считать из таблицы newread36 те записи, которые присутствуют в таблице tempmas c паллетой не равной "1" либо вообще отсутствуют. 
Т.е. если будут следующие данные в наших таблицах:
newread36
Код

'0000-0000-0000-0000-0000-0057'
'0000-0000-0000-0000-0000-0059'
'0000-0000-0000-0000-0000-0082'
'0000-0000-0000-0000-0000-0086'
'0000-0000-0000-0000-0000-0087'
'0000-0000-0000-0000-0000-0091'
'0000-0000-0000-0000-0000-0095'

tempmas
Код

'0000-0000-0000-0000-0000-0057', 1
'0000-0000-0000-0000-0000-0059', 1
'0000-0000-0000-0000-0000-0082', 1
'0000-0000-0000-0000-0000-0086', 1
'0000-0000-0000-0000-0000-0087', 1
'0000-0000-0000-0000-0000-0092', 2
'0000-0000-0000-0000-0000-0095', 2

Метка '0000-0000-0000-0000-0000-0091' - отсутствует в таблице invoice
'0000-0000-0000-0000-0000-0095' - соответствует второе паллете

Запрос
Код

SELECT newread36.UID
from newread36
inner join tempmas
on tempmas.UID=newread36.UID
where pallet!=1
 Выведет только "0000-0000-0000-0000-0000-0095" т.е. не соответсвующию 1 первой паллете, но нужно вывести и "0000-0000-0000-0000-0000-0091"

Это сообщение отредактировал(а) CYBERDREAM - 22.10.2007, 13:34


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
CYBERDREAM
Дата 19.10.2007, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: нет
Всего: 28



Решил следующим образом, но такое решение мне не по душе, должно быть иное: 
Код

SELECT newread36.UID
from newread36
join tempmas
on tempmas.UID=newread36.UID
where pallet!=1
union
SELECT UID
from newread36
WHERE UID not in (Select UID
from tempmas)
 smile 


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
Deniz
Дата 22.10.2007, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 7
Всего: 44



Цитата(CYBERDREAM @  19.10.2007,  11:58 Найти цитируемый пост)
Метка '0000-0000-0000-0000-0000-0091' - отсутствует в таблице invoice

а где в вопросе упоминание и описание invoice?
попробуй вот так
Код

SELECT newread36.UID
from newread36
left join tempmas on tempmas.UID=newread36.UID
where (tempmas.pallet <> 1) or (tempmas.pallet is null)


PS: вроде в прошлый раз просили правильно описать структуру, но ...
хотя бы так:
newread36
UID - int первичный ключ

tempmas
UID - int первичный ключ
UID_news - int внешний ключ к newread36

PSS: 
UID - везде первичный ключ
tempmas   ( UID - внешний ключ, к tagstate)
первичный ключ не может быть внешним, надо как-то с терминологией разобраться, или я что-то не понимаю
Угадывая, мы мало сможем помочь


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
CYBERDREAM
Дата 22.10.2007, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: нет
Всего: 28



Вновь напортачил с описанием.
Все же как желательно описывать структуру?

Thx Deniz, все исправно пашет. smile 


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
Deniz
Дата 23.10.2007, 06:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 7
Всего: 44



Не знаю как другим, но ...
Примерно как я описал выше.
Обязательно:
1. Список таблиц, которые участвуют в запросе.
2. По каждой таблице из п.1 список полей, которые участвуют в запросе (имя поля, тип поля, ограничения)
3. По каждой таблице из п.1 список индексов.
4. По каждой таблице из п.1 список внешних ключей.
5. может еще чего, пока не соображу.

В зависимости от вопроса некоторые вещи можно не указывать (для этого вопроса достаточно описание таблиц и имен полей).


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | СУБД, общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0910 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.