J'ai les tableaux suivants:requête SQL Inverted
{Tableau 1 ArticleNo (int), ArtDescription (string)}
{Tableau2 ArticleNo (int), Année (date)}
Table1.ArticleNo est une clé primaire. Table2.ArticleNo est une clé étrangère fait référence à table1.ArticleNo
Il est difficile d'expliquer ce que je veux interroger, alors voici un court exemple:
Tableau 1
(1,Desk)
(2,Chair)
(3,Ruler)
Tableau2
(1,2000)
(1,2000)
(2,2001)
La requête doit retourner:
1 Desk 2001
2 Chair 2000
3 Ruler 2000
3 Ruler 2001
Tous les articles qui ne sont pas vendus (ou autre) dans toutes les années (toutes les années de table2). J'espère que vous comprenez mon exemple - la requête semble être très complexe.
Voici mon approche à une solution:
SELECT table1.ArticleNo,table1.ArtDescription,table2.Year
FROM table1
JOIN table2
ON table1.ArticleNo=table2.ArticleNo
WHERE NOT table1.ArticleNo IN (SELECT table2.Year FROM table2);
J'ai essayé beaucoup de choses différentes .. J'espère que vous pouvez m'aider!
Je pense que vous voudrez peut-être repenser vos schémas de table. Cela va devenir très complexe très rapidement et ne procure aucun avantage immédiat. Peut-être votre deuxième table devrait être les années dans lesquelles les articles sont vendus, par opposition à ne pas être vendus. –
Dans votre exemple sur la ligne "WHERE NOT table1.ArticleNo IN (SELECT table2.Year FROM table2);" vous comparez ArticleNo à un an. De votre exemple de données qui ne correspondra jamais. –
Quel moteur de base de données utilisez-vous? – Quassnoi