2009-12-16 5 views
1

Utilisation de SQL Server 2005Comment cacher la date et l'id de la table

Je veux cacher la date de table1 où table1.id = table2.id et table1.date = table2.date

Tableau 1

ID Date 

001 01-01-2009 
001 02-02-2009 
001 03-01-2009 
001 04-01-2009 
002 01-01-2009 
002 02-02-2009 
002 03-01-2009 

...,

Tableau2

ID Date Holiday 

001 01-02-2009 0 
001 02-02-2009 1 
001 03-01-2009 0 
001 04-01-2009 0 
002 01-01-2009 1 
002 02-02-2009 1 
002 03-01-2009 0 

..,

Recherche

SELECT ID, Date 
FROM table 
WHERE date NOT IN (SELECT date FROM table2 WHERE holiday = 1) 
    AND id NOT IN (SELECT id FROM table2 WHERE holiday = 1) 

La requête ci-dessus affiche rien.

Comment faire une requête pour cette condition?

Besoin d'aide de requêtes SQL

Répondre

1

Vous pouvez faire quelque chose comme ceci:

SELECT ID,Date From Table1 
WHERE convert(VARCHAR,date)+'~'+convert(VARCHAR,id) NOT IN 
    (SELECT convert(VARCHAR,date)+'~'+convert(VARCHAR,id) FROM table2 
    WHERE Holiday=1) 
1

Votre id ne sont pas tout à fait unique, et sont tout essentiellement cache.

Par exemple ...

Tableau 1

001 03-01-2009 - ce n'est pas de vacances ...

Tableau 2

001 02-02-2009 1 - c'est un jour férié - mais a un ID de "001" - le même ID que l'enregistrement dans le tableau 1 qui n'est pas un jour férié!

Êtes-vous sûr de vouloir filtrer en fonction de l'ID - sûrement juste à ce jour fonctionnera:

SELECT 
    ID, 
    Date 
FROM 
    table 
WHERE 
date not in (select date from table2 where holiday = 1) 
Questions connexes