Requête select sur 2 tables innodb
Résolu/Fermé
bruno3591
Messages postés
155
Date d'inscription
dimanche 28 septembre 2008
Statut
Membre
Dernière intervention
28 mars 2010
-
27 nov. 2008 à 13:34
Utilisateur anonyme - 28 nov. 2008 à 14:17
Utilisateur anonyme - 28 nov. 2008 à 14:17
A voir également:
- Requête select sur 2 tables innodb
- 2 comptes whatsapp - Guide
- Comment faire une table des matières sur word - Guide
- 2 ecran pc - Guide
- Word numéro de page 1/2 - Guide
- Sql lister les tables ✓ - Forum Programmation
6 réponses
Utilisateur anonyme
27 nov. 2008 à 13:50
27 nov. 2008 à 13:50
ta base de donnée est mal construite
en fait il faut utiliser un alter table pour créer un lien entre deux tables.
de plus tu utilise des mots SQL interdit pour tes noms de champs par exemple "date"
réessaye avec ça
Pour ta requête il faut faire
Dis moi si ça marche comme ça
P.S. : n'utilise pas le NOT NULL partout sinon après tu es obligé de remplir tous les champs
en fait il faut utiliser un alter table pour créer un lien entre deux tables.
de plus tu utilise des mots SQL interdit pour tes noms de champs par exemple "date"
réessaye avec ça
CREATE TABLE CHARIOT( id_CHARIOT INT NOT NULL AUTO_INCREMENT, leType_CHARIOT VARCHAR(255), energie_CHARIOT VARCHAR(255) , marque_CHARIOT VARCHAR(255), modele_CHARIOT VARCHAR(255), numSerie_CHARIOT VARCHAR(30), annee_CHARIOT INT, numParc_CHARIOT VARCHAR(255), CONSTRAINT PK_Chariot PRIMARY KEY(id_CHARIOT) ); CREATE TABLE ANOMALIE( id_ANOMALIE INT(11) NOT NULL AUTO_INCREMENT, idChariot_ANOMALIE INT NOT NULL, signalement_ANOMALIE VARCHAR(255), date_ANOMALIE DATE, CONSTRAINT PK_ANOMALIE PRIMARY KEY(id_ANOMALIE) ); ALTER TABLE ANOMALIE ADD CONSTRAINT FK_ANOMALIE_CHARIOT FOREIGN KEY(idChariot_ANOMALIE) REFERENCES CHARIOT(id_CHARIOT) ;
Pour ta requête il faut faire
SELECT A.signalement_ANOMALIE FROM ANOMALIE A,CHARIOT C WHERE C.id_CHARIOT=A.idChariot_ANOMALIE AND C.numSerie_CHARIOT = leNumDeSerieDuChariot
Dis moi si ça marche comme ça
P.S. : n'utilise pas le NOT NULL partout sinon après tu es obligé de remplir tous les champs
bruno3591
Messages postés
155
Date d'inscription
dimanche 28 septembre 2008
Statut
Membre
Dernière intervention
28 mars 2010
16
27 nov. 2008 à 16:02
27 nov. 2008 à 16:02
Merci, ça fonctionne si je récupère le numserie.
SELECT A.signalement_ANOMALIE
FROM ANOMALIE A,CHARIOT C
WHERE C.id_CHARIOT=A.idChariot_ANOMALIE
AND C.numSerie_CHARIOT = leNumDeSerieDuChariot
Entre temps j'y suis aussi arrivé avec cette requête, la tienne semble plus normalisée :
'SELECT anomalie.signalement FROM anomalie INNER JOIN chariot ON anomalie.idchariot = '.$idchariot.'';
A priori le fait de se servir de clé étrangères faciliterai l'intégrité de la base.
SELECT A.signalement_ANOMALIE
FROM ANOMALIE A,CHARIOT C
WHERE C.id_CHARIOT=A.idChariot_ANOMALIE
AND C.numSerie_CHARIOT = leNumDeSerieDuChariot
Entre temps j'y suis aussi arrivé avec cette requête, la tienne semble plus normalisée :
'SELECT anomalie.signalement FROM anomalie INNER JOIN chariot ON anomalie.idchariot = '.$idchariot.'';
A priori le fait de se servir de clé étrangères faciliterai l'intégrité de la base.
bruno3591
Messages postés
155
Date d'inscription
dimanche 28 septembre 2008
Statut
Membre
Dernière intervention
28 mars 2010
16
27 nov. 2008 à 17:11
27 nov. 2008 à 17:11
Ok, merci :) bonne soirée.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bruno3591
Messages postés
155
Date d'inscription
dimanche 28 septembre 2008
Statut
Membre
Dernière intervention
28 mars 2010
16
28 nov. 2008 à 08:52
28 nov. 2008 à 08:52
Bonjour Dante,
Est-ce que je peux encore abuser de tes connaissances pour finaliser mon code ?
Est-ce que je peux encore abuser de tes connaissances pour finaliser mon code ?
bruno3591
Messages postés
155
Date d'inscription
dimanche 28 septembre 2008
Statut
Membre
Dernière intervention
28 mars 2010
16
28 nov. 2008 à 14:06
28 nov. 2008 à 14:06
Ce code m'affiche les enregistrements en boucle mais ne s'arrête après le dernier trouver correspondant à son idchariot. du coup même s'il n'y a qu'un seul enregistrement et que je met LIMIT 2, il m'affiche le même enregistrement 2 fois.
<?php
$requete3 = 'SELECT anomalie.signalement, anomalie.idano, anomalie.idchariot FROM anomalie INNER JOIN chariot ON anomalie.idchariot = '.$idchariot.' LIMIT 2';
$execution_requete3 = mysql_query($requete3);
$total3 = mysql_num_rows($execution_requete3);
if($total3) {
echo '<table border="0" cellspacing="0" cellpadding="8" bgcolor="#FFFFFF" >'."\n";
echo '<tr>';
echo '<td><b><u>Anomalies en cours</u></b></td>';
echo '</tr>'."\n";
while($row = mysql_fetch_array($execution_requete3)) {
echo '<tr>';
echo '<td>'.$row['signalement'].'</td>';
echo '</tr>'."\n";
}
echo '</table>'."\n";
}
else echo 'Pas d\'enregistrements dans la base...';
mysql_free_result($execution_requete3);
?>
<?php
$requete3 = 'SELECT anomalie.signalement, anomalie.idano, anomalie.idchariot FROM anomalie INNER JOIN chariot ON anomalie.idchariot = '.$idchariot.' LIMIT 2';
$execution_requete3 = mysql_query($requete3);
$total3 = mysql_num_rows($execution_requete3);
if($total3) {
echo '<table border="0" cellspacing="0" cellpadding="8" bgcolor="#FFFFFF" >'."\n";
echo '<tr>';
echo '<td><b><u>Anomalies en cours</u></b></td>';
echo '</tr>'."\n";
while($row = mysql_fetch_array($execution_requete3)) {
echo '<tr>';
echo '<td>'.$row['signalement'].'</td>';
echo '</tr>'."\n";
}
echo '</table>'."\n";
}
else echo 'Pas d\'enregistrements dans la base...';
mysql_free_result($execution_requete3);
?>