2011-05-14 4 views
0

Voici ma base de données avec 4 tables (étudiant, cours, module, instructeur). Et je veux savoir si cette base de données est correcte ou non et si je fais bien comment puis-je récupérer des données à partir des tables en utilisant l'identifiant de l'étudiant comme ci-dessous.Comment récupérer des données à partir d'attributs à plusieurs valeurs dans une base de données relationnelle?

  • Quels sont les modules étudiant 10122342 a? >> Réponse attendue: CN103, CN201

enter image description here

(pk) = primary key and (fk)=foreign key 

La prochaine chose est que je blême d'importer des valeurs de ces tableaux ci-dessus à une table nouvellement créée? la situation est que je veux importer "s_id" et "i_id" des tables ci-dessus dans l'attribut "id" de la table nouvellement créée "Everyone"; en même temps, je veux aussi générer la valeur '0'/'1' pour l'attribut 'type' de la table "Tout le monde" où 0 valeur pour les identifiants importés de 's_id' et 1 pour le reste des identifiants importés de ' i_id '. Voici ma nouvelle table de base de données attendue.

Everyone 
id  |type | 
----------------- 
10122345 | 0 | 
10122342 | 0 | 
10222346 | 0 | 
20432343 | 1 | 
20432311 | 1 | 
20532334 | 1 | 

S'il vous plaît Quelqu'un peut-il m'aider? est-ce possible de faire avec mysql et php? Merci.

+0

pourquoi voulez-vous faire ce qui précède? Que se passe-t-il si les identifiants des étudiants et des instructeurs se chevauchent? semble qu'avec cette structure de table, chaque étudiant ne peut s'inscrire qu'à un cours. – dqhendricks

+0

également, les valeurs délimitées par des virgules dans une clé foriegn n'est pas une bonne pratique. Comment seras-tu capable d'utiliser une jointure dans une requête pour l'appeler? Si vous avez déjà des valeurs séparées par des virgules dans une table, c'est un bon signe qu'une table séparée est nécessaire. – dqhendricks

+0

envisager d'avoir des tables séparées qui joignent les tables ensemble. par exemple, avoir une table qui contient juste un identifiant d'étudiant et un identifiant de cours qui représenterait quels étudiants suivent quels cours. Ainsi, chaque étudiant peut suivre plusieurs cours et chaque cours peut être suivi par plusieurs étudiants. – dqhendricks

Répondre

1

Cela devrait être la réponse à votre première question:

SELECT m_code FROM Module a INNER JOIN Student b ON a.c_code = b.c_code WHERE b.s_id = '10122342' 

Je ne peux pas trouver la réponse à votre deuxième question, mais il devrait être quelque chose avec joint, cela pourrait aider: MySQL Insert & Joins

+0

il donne seulement 'cn103', il suppose aussi de récupérer 'cn201' ?? – Himalay

+0

Quel est le type de données de la colonne c_code dans la table Module? – Jeroen

+0

pour l'instant c'est varchar (10). – Himalay

Questions connexes