2016-04-05 10 views
-2

Bir kullanıcının birden çok hesapta oturum açabileceği bir cihaza bir GUID atadım. Uygulama her çalıştığında bir tablodaki GUID ve UserId kaydeder. GUID benzersiz kalır ancak birden çok UserId sahip olabilir.Bir sorgudan döndürülen değerlerin bir listesinin başka bir tablonun sütununda olup olmadığını kontrol etmek için T-SQL

Her bir UserId için aboneliklere sahip ikinci bir tablom var.

Tüm UserId'leri GUID'deki bir aramadan döndürdüm ve sonra bu UserId öğelerinin herhangi birinin abonelik tablosunda olup olmadığını görmem gerekiyor.

Bunu MS SQL Server 2014'te T SQL kullanarak nasıl yapabilirim?

Teşekkür ederiz.

+1

Başlamak için harika bir yer. http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/ –

cevap

0

Bu iki tabloda bir iç birleştirmeler yapın.

Select 
    tableA.valueColumn 
    from tableA 
    inner join 
    tableB 
    on tableA.valueColumn = tableB.valueColumn 
0

Eğer parametre olarak sorgulamak istediğiniz GUID tedarik varsayarsak ...

SELECT u.UserID, s.Subscription 
FROM Users u 
INNER JOIN Subscriptions s 
ON u.UserID = s.UserID 
WHERE u.GUID = @guid 

Kullanım SOL hiçbir abonelikler ile userids dahil etmek istiyorsanız JOIN yerine INNER JOIN.

0

trick (Üstelik geçen sorguyu gerekir, ancak ben senin tablo isimleri hiçbir fikrim yok, bu yüzden sadece ilk çıkar bazı bok tabloları/veri oluşturmak)

--DROP TABLE #Devices; 
    CREATE TABLE #Devices(
     DeviceGUID UNIQUEIDENTIFIER DEFAULT NEWSEQUENTIALID() PRIMARY KEY, 
     DeviceName VARCHAR(20) 
     ) 
    ; 

    CREATE TABLE #Users(
     UserId INT IDENTITY(1,1) PRIMARY KEY, 
     Username VARCHAR(20) 
     ) 
    ; 

    CREATE TABLE #DeviceUsers(
     UserId INT, 
     DeviceGUID UNIQUEIDENTIFIER 
     ) 
    ; 

    --add some devices 
    INSERT INTO #Devices(DeviceName) VALUES ('Device1'), ('Device2'); 

    --add some users 
    INSERT INTO #Users(Username) VALUES ('User1'), ('User2'); 

    --add some deviceusers 
    INSERT INTO #DeviceUsers(UserId, DeviceGUID) 
    SELECT u.UserId, d.DeviceGUID 
    FROM #Users u 
     CROSS JOIN #Devices d 
    ; 

    SELECT u.*, d.* 
    FROM #DeviceUsers du 
     INNER JOIN #Users u 
      ON du.UserId = u.UserId 
     INNER JOIN #Devices d 
      ON d.DeviceGUID = du.DeviceGUID 
    WHERE d.DeviceGUID = 'Some GUID Goes Here'  

aşağıdakileri yapmalıdırlar;

İlgili konular