2017-02-13 1 views
0

Ich habe zwei Tabellen(nicht in) in Exklusionsverknüpfung sql

1) tbluser 2) Userlogin

tbluser bestehen aus

Benutzernamen und Email

und Benutzerlogin sieht wie

aus
create table userlogin 
(
username varchar(50), 
[date] datetime 
) 

Ich möchte von tbluser E-Mail auswählen und bestätigen Benutzeranmeldung (Tabelle 2)

Ich möchte E-Mail der Mitarbeiter aus Tabelle 1, die Tabelle nicht in sind 2 mit ausgewählten Datumsbereich

so erstellt i ein Verfahren

alter proc TMSautomail 
@datefrm datetime, 
@dateto datetime 
as 
begin 
SELECT 
    tblUser.Email 
from 
    tblUser 
     inner join 
    userlogin 
     on 
     tblUser.UserName not in userlogin.username 
where userlogin.date between @datefrm and @dateto 
end 

es zeigt mir Fehler, wenn ich das Verfahren diese

ändern

die Prozedur gibt leere Spalte,

i E-Mail von Tisch holen will ein und bestätigen Sie mit Benutzername, das 2, nicht in der Tabelle ist

meine zweite Tabelle eines aus Eintrag

es sollten alle Zeilen der Tabelle zurückgeben ein

+0

Es gibt keine Notwendigkeit für beitreten, nur NOT IN und eine Unterabfrage. –

+0

Ich habe das auch benutzt, aber wenn ich where-Klausel hinzufüge zeigt es alle Zeilen –

+0

Zeige diese Abfrage auch –

Antwort

1

Verwenden NOT IN und eine Unterabfrage:

CREATE PROCEDURE TMSautomail(
    @datefrm datetime, 
    @dateto datetime 
) 
AS 
BEGIN 

    SELECT u.Email 
    FROM tblUser u 
    WHERE u.Email NOT IN (
     SELECT Email 
     FROM tblUser u1 
      INNER JOIN UserLogin l 
       ON u1.Username = l.Username 
     WHERE l.Date BETWEEN @datefrm AND @dateto 
    ) 

END 
0

dies versuchen,

SELECT u.Email 
    FROM tblUser u 
    WHERE NOT EXISTS (
     SELECT Email 
     FROM UserLogin l 
       WHERE u1.Username = l.Username 
     AND l.Date BETWEEN @datefrm AND @dateto 
    ) 
Verwandte Themen