Ne pas stocker plusieurs valeurs dans le champ student_id
car une seule valeur pour chaque intersection de ligne et de colonne est requise pour First Normal Form. C'est une bonne chose pour de nombreuses raisons, mais il est évident qu'elle résout d'avoir à traiter des cas comme student_id
de "1245
". Au lieu de cela, il serait préférable d'avoir une table séparée pour stocker les identifiants d'étudiants associés aux enregistrements dans cette table. Par exemple (vous voudriez ajouter des contraintes propres à cette définition de la table ainsi),
CREATE TABLE mytable_student_id (
mytable_id INTEGER,
student_id INTEGER
);
Et vous pouvez alors interroger à l'aide d'une jointure:
SELECT * FROM mytable JOIN mytable_student_id
ON (mytable.id=mytable_student_id.mytable_id) WHERE mytable_student_id.student_id = 245
Notez que puisque vous ne l'avez pas poster des détails de schéma concernant votre table d'origine autre que celui contenant un champ student_id
, je l'appelle mytable
pour les besoins de cet exemple (et en supposant qu'il a un champ de clé primaire appelé id
- avoir une clé primaire est une autre exigence de 1NF).
Je pense que cela devrait être 'WHERE mytable_student_id.student_id = 245' – LHMathies