J'ai une FAQ basée sur une base de données qui est organisée en sections et j'essaie d'obtenir les données de section pour seulement les sections qui ont une question/réponse qui leur est associée.Comment puis-je sélectionner des lignes distinctes lorsqu'un champ de texte fait partie des champs renvoyés dans MS SQL Server 2000?
Voici le schéma:
|---------------------| |----------------------|
| Section | | Quest-Ans |
|---------------------| |----------------------|
| PK | id(int) |<--| | PK | id(int) |
| | title(varchar) | |--| FK | Sec_id(int) |
| | desc(text) | | | body(text) |
|---------------------| |----------------------|
Lorsque je tente cette requête:
SELECT DISTINCT s.id, s.title, s.desc
FROM Section as s INNER JOIN Quest-Ans as q ON s.id = q.Sec_id
je reçois une erreur disant que DISCRET ne peut pas être appliquée à un champ de texte. Comment puis-je obtenir les données que je veux?
Si cela est important, il s'agit d'une base de données SQL2000.
EDIT:
Ok, il semble qu'il y ait deux façons d'aller à ce sujet. Soit avec EXISTS et une sous-requête dans la clause where, soit avec la sous-requête dans la jointure interne. Lequel est plus vite?
@ Ekeko - Cela devrait être SELECT DISTINCT s.id. –
Renvoie une ligne pour chaque question. – cdeszaq
@Lieven: Select renvoie un ensemble de lignes, et un ensemble n'a pas d'éléments de répétition et la jointure interne est faite en fonction de la clé (je suppose). Donc, distinct n'est pas nécessaire. – eKek0