Requête base de donnée

pontarose Messages postés 151 Statut Membre -  
pontarose Messages postés 151 Statut Membre -
Bonjour,

j'ai une protéine A qui est constitué de 2 sous-unité A1 et A2.(a une proteine lui est associé des sous-unité qui lui sont propores)
la proteine et les sous-unités sont dans deux tables différentes

Si la protéine A existe pas, j'entre son nom (=A) dans ma base de donnée
* si la sous unité A1 existe: j'ai un message qui me dit que A1 existe déjà
* si la sous unité A1 existe pas : je l'insère dans ma base de donnée

Mon problème est que si pour une autre protéine (B) j'ai déjà entré une sous-unité A1.
et que je veux entrer les données pour la protéine A
J'obtiens le message A1 existe déjà. Or je veux regarder pour A si j'ai déjà entré A1 et non regarder dans la table sous-unité si j'ai A1.

J'espère que vous m'avez suivi
Ce que j'aimerais en fait c'est ne pas pouvoir entrer deux fois la même sous unité cela pour une même protéine.

$requete=
"SELECT proteine_id
FROM proteine
WHERE proteine_name='$proteine_name'";

$execution = mysql_query($requete) or die("erreur au niveau de la requête2");
$ligne = mysql_fnum_rows($execution);
if($ligne!=0)
{
print("la proteine existe dejà");
}
else
{
$requete2=
"INSERT INTO protein (proteine_id, proteine_name)
VALUES('','$proteine_name')";
mysql_query($requete2) ;

$protein_id= mysql_insert_id();

$requete3=
"SELECT sub_id
FROM proteine,sub
WHERE proteine.proteine_id='$proteine_id'
AND sub.sub_name='$sub_name'";

$execution3 = mysql_query($requete3) or die("erreur au niveau de la requête3");
$rows = mysql_num_rows($execution3);

if($rows!=0)
{
print("sous-unité existe déjà");
}
else
{
$requete4=
"INSERT INTO sub (sub_id, proteine_id,sub_name)
VALUES('','$proteine_id','$sub_name')";
mysql_query($requete4) ;
}

2 réponses

ShaBoo Messages postés 406 Statut Membre 50
 
Bonjour,

Il faut que tu passes par une table intermédiare :

-Table Protéïne : A, B, C, ...

-Table Associe Protéïne & Sous_Protéïne : (A,A1),(A,A2),(B,A1),(B,B1), ...

-Table Protéïne : A1, A2, B1, B2, C1, C2, ...
0
pontarose Messages postés 151 Statut Membre 2
 
Je ne comprend pas bien le lien.
en fait ,je ne peux pas avoir (B,B1) (B,A1)

Ce que j'aimerais en fait c'est ne pas pouvoir entrer deux fois la même sous unité cela pour une même protéine.
Pour la protéine A je ne peux pas entre deux fois A1 (j'obtiendrais le message : A1 existe déjà )
0