Interroger plusieurs tables avec une seule requête

Signaler
Messages postés
155
Date d'inscription
dimanche 28 septembre 2008
Statut
Membre
Dernière intervention
28 mars 2010
-
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
-
Bonsoir,

Est-il possible de faire une seule requête pour interroger plusieurs tables sans avoir de clé étrangère ?

Je voudrais faire au moins 3 sorte de requête , select, insert, update.

9 réponses

Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
38
salut

oui c'est possible
Messages postés
155
Date d'inscription
dimanche 28 septembre 2008
Statut
Membre
Dernière intervention
28 mars 2010

Est-ce qu'avec ce genre de configuration on peut faire ce genre de requête :

CREATE TABLE `chariot` (

`idchariot` int( 11 ) NOT NULL AUTO_INCREMENT ,
`type` varchar( 255 ) NOT NULL ,
`energie` varchar( 255 ) NOT NULL ,
`marque` varchar( 255 ) NOT NULL ,
`modele` varchar( 255 ) NOT NULL ,
`n_serie` varchar( 30 ) NOT NULL ,
`annee` int( 11 ) NOT NULL ,
`n_parc` varchar( 255 ) NOT NULL ,
PRIMARY KEY ( `idchariot` ) ) ENGINE InnoDB DEFAULT CHARSET latin1 AUTO_INCREMENT =

CREATE TABLE `anomalie` (
  `idano` int(11) NOT NULL auto_increment,
  `idchariot` int(10) NOT NULL,
  `signalement` varchar(255) NOT NULL,
  `date` date NOT NULL,
  PRIMARY KEY  (`idano`),
  KEY `idchariot` (`idchariot`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=

Un chariot possède plusieurs anomalies, on peut dire que la table chariot est liées à celle des anomalies. Les liaisons correspondent à la présence de l'identifiant (idchariot) dans la table anomalie.
Est-ce exact ?

Voici la requête d'insert que j'envoie avec le formulaire de la page anomalie.php :
$req = mysql_query("INSERT INTO anomalie (idano, idchariot, signalement, date) VALUES ('', '$idchariot', '$signalement', '$date')");

Le but étant d'afficher sur la page "fiche_chariot.php", les caractéristiques d'un chariot choisit dans une liste avec ces anomalies, et pas toutes tous les enregistrements de la table anomalie. Un même chariot peut avoir plusieurs anomalies.

Jusqu'a présent je savais faire des requêtes simples, qui interrogent, insert ou modifient une table, mais les utilisateurs deviennent plus exigeant et veulent des résultats qui m'obligent à passer par une base de donnée relationnelle. J'ai tenté d'utiliser les clés étrangères avec phpmyadmin, mais je n'ai pas encore compris leur fonctionnement, sql me génère une erreur à l'insertion.

Merci de votre aide.
Messages postés
155
Date d'inscription
dimanche 28 septembre 2008
Statut
Membre
Dernière intervention
28 mars 2010

"Le but étant d'afficher sur la page "fiche_chariot.php",....."

Biensur, après l'insertion des données.
Messages postés
155
Date d'inscription
dimanche 28 septembre 2008
Statut
Membre
Dernière intervention
28 mars 2010

Je peux reformuler si ce n'est pas clair.
Messages postés
155
Date d'inscription
dimanche 28 septembre 2008
Statut
Membre
Dernière intervention
28 mars 2010

Personne pour un coup de main ? :) c'est bien le forum débutant ?!
Messages postés
155
Date d'inscription
dimanche 28 septembre 2008
Statut
Membre
Dernière intervention
28 mars 2010

Si un modérateur passe par là, peut-il supprimer cette file de post (ou se monologue) qui n'a pas lieu d'être. Cela évitera de  tomber sur un sujet sans  réponse dans google par exemple.
Merci.
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
38
si tu veux juste me faire reagir alors voila :

je ne te ferais pas ton projet. je ne vais pas aller dans mysql creer une database test, tes tables puis entrer des donnees bidon pour tester (meme si je l'ai deja fait pour aider des gens sur ce forum...)

par contre, j'aurais bien voulu lire ton code (pas seulement le code de creation de ta table...) pour eventuellement le corriger.

la t'as montre aucun : INSERT INTO ... SELECT ...

SELECT ... FROM a, b
SELECT ... (SELECT ... FROM ... ) AS subrequest FROM ...
SELECT ... FROM a LEFT JOIN B IN ...

bref, plutot que de faire un up, t'aurais pu faire des tests...
Messages postés
155
Date d'inscription
dimanche 28 septembre 2008
Statut
Membre
Dernière intervention
28 mars 2010

Je ne cherche pas à te faire réagir, ni toi ni d'autres. Mon dernier post n'était pas ironique.

bref, plutot que de faire un up, t'aurais pu faire des tests...

C'est chose faite, ma requête fonctionne et j'en ai compris le fonctionnement :

'SELECT anomalie.signalement FROM anomalie INNER JOIN chariot ON anomalie.idchariot = '.$idchariot.'';

Si tu avais besoin de plus d'info pour me comprendre il fallait le demander.
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
38
j'avais bien compris, mais j'allais pas tout faire a ta place... j'attendais que tu postes un bout de code a déboguer...