Как работать с not in
Привет друзья
У меня есть таблица с именем " attachment_marche"
create table attachement_marche ( Id_attachement_marche int primary key identity NOT NULL, Id_decompte int foreign key references decompte (Id_decompte), Id_bon_reception_marche int foreign key references bon_reception_marche(Id_bon_reception_marche), Id_marche int foreign key references marche(Id_marche), Num_attachement varchar(100) COLLATE French_CI_AS, Date_etablissement date, Date_debut date, Date_fin date, Flag_dernier varchar(20)COLLATE French_CI_AS, Montant float, Ind_supp int DEFAULT 1, User_create varchar(100) COLLATE French_CI_AS NOT NULL, Date_create datetime DEFAULT getdate() NOT NULL, User_modif varchar(100) COLLATE French_CI_AS , Date_modif varchar(100) COLLATE French_CI_AS )
И таблица с именем bon_reception_marche
create table bon_reception_marche ( Id_bon_reception_marche int primary key identity NOT NULL, Id_marche int foreign key references marche(Id_marche), Designation_bon_reception varchar(100) COLLATE French_CI_AS, Num_bon_reception varchar(100) COLLATE French_CI_AS, Date_commande date, Date_reception date, Unite varchar(50) COLLATE French_CI_AS, Qte float, Prix_unitaire float, Montant float, TVA float, MO varchar(100) COLLATE French_CI_AS, OT varchar(100) COLLATE French_CI_AS, Ind_supp int DEFAULT 1, User_create varchar(100) COLLATE French_CI_AS NOT NULL, Date_create datetime DEFAULT getdate() NOT NULL, User_modif varchar(100) COLLATE French_CI_AS , Date_modif varchar(100) COLLATE French_CI_AS, ) I want to display the vouchers of receipts which are between two dates and which are not affected to any attachment of the marche
И заранее спасибо друзья
Что я уже пробовал:
Я проверил этот запрос, но он не сработал
select * from bon_reception_marche where Id_bon_reception_marche NOT IN (select Id_bon_reception_marche from attachement_marche where Id_marche in (select Id_marche from marche where Num_marche = 'DG/01/2014')) and Date_reception between '2016-07-07' and '2017-06-19' and Id_marche in (select TOP 1 Id_marche from marche where Num_marche = 'DG/01/2014')
ZurdoDev
Используйте не существует или не в или использовать левое соединение и проверьте, где идентификатор имеет значение null.
Member 13055644
я проверил этот запрос, но он не сработал
выбирать *
от bon_reception_marche br
левое соединение
attachement_marche на
на.Id_bon_reception_marche = БР.Id_bon_reception_marche
слева присоединяйтесь к марке
на.Id_marche = марш.Id_marche
где
Date_reception между
'2016-04-07" и " 2017-06-19 и на.Id_marche в
(выберите Id_marche из региона Марке, где Num_marche = ДГ/01/2014) и на.Id_bon_reception_marche = нуль
Member 13055644
я попробовал эту просьбу, но ничего не вышло
выбирать *
от bon_reception_marche br
левое соединение
attachement_marche на
на.Id_bon_reception_marche = БР.Id_bon_reception_marche
слева присоединяйтесь к марке
на.Id_marche = марш.Id_marche
где
Date_reception между
'2016-04-07" и " 2017-06-19 и на.Id_marche в
(выберите Id_marche из региона Марке, где Num_marche = ДГ/01/2014) и на.Id_bon_reception_marche = нуль
ZurdoDev
Вы должны пройти через это и выяснить, что не работает, потому что мы не можем видеть ваши данные или знать, почему они не дают вам то, что вы хотите.
Member 13055644
Я хочу отобразить список квитанций, которые не существуют в таблице attachement_marche
ZurdoDev
Один простой способ это сделать
ВЫБИРАТЬ *
от поступлений
LEFT JOIN attachment_marche ON field1 = field1
Где attachment_marche.идентификатор имеет значение null
При соединении слева, если запись не существует, то она будет равна нулю. Это сработает. Начните с этого, убедитесь, что вы получаете то, что ожидаете, а затем добавьте другие предложения where.