Hej. SELECT * FROM Medlemmar, Kort WHERE Medlemmar.ID_Medlem = Kort.ID_Medlem AND Kort.Giltighetstid < Getdate() SELECT * Hej,TSQL (ogiltiga kort)
Jag önskar hjälp med en fråga i TSQL. Jag skall söka ut hur många medlemmar som som har ogiltiga kort. Observera att en medlem kan ha fler kort.
Nedanstående fråga kommer generera ett felaktigt resultat eftersom en medlem kan ha flera kort. Giltiga och ogiltiga.
Så min fråga är hur man bara får fram medlemmar som inte har något giltigt kort.
SELECT * FROM Medlemmar, Kort WHERE Medlemmar.ID_Medlem = Kort.ID_Medlem AND Kort.Giltighetstid < Getdate()
Hälsning
Johan.seSv: TSQL (ogiltiga kort)
du får göra en join som exkluderar de som har giltiga kort...
Var ett tag sen jag programmerade T-SQL tyvärr, men leta i hjälpfilen (sqlbol.???) efter joins, slå på left och right join... borde vara en av dem iaf... =)
/EmmaSv: TSQL (ogiltiga kort)
FROM Medlemmar m, Kort k
WHERE m.ID_Medlem *= k.ID_Medlem
AND k.Giltighetstid < Getdate() Sv: TSQL (ogiltiga kort)
En liten subfråga borde göra susen.
För att få ut all information om medlemmar och ogiltiga kort:
SELECT *
FROM Medlemmar m, (SELECT * FROM Kort WHERE Giltighetstid < Getdate()) k
WHERE m.ID_Medlem = k.ID_Medlem
För att se till att medlemmar som har minst ett giltigt kort inte skall visas lägg till ett villkor till:
SELECT *
FROM Medlemmar m, (SELECT * FROM Kort WHERE Giltighetstid < Getdate()) k
WHERE m.ID_Medlem = k.ID_Medlem
AND m.ID_Medlem NOT IN (SELECT ID_Medlem FROM Kort WHERE Giltighetstid >= GetDate())
mvh
Herbjörn