Jonction de 2 tables

cs_lesims1000 Messages postés 26 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 21 novembre 2011 - 19 mars 2010 à 19:09
Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 - 25 mars 2010 à 20:32
Bonjour, je suis en train de créer un tableau de gestion de stock pour mon entreprise: le tableau se compose de la sorte:
-référence
-couleur1
-couleur2
-couleur3
etc.....


la gestion de stock se fera via des codes barres et des douchettes.
chaque code barre est unique et correspond à une référence et une couleur. si je crée qu'une seul table je me retrouverait avec X fois la même référence (X étant le nombre de couleur)
j'ai donc créer 2 tables:

table1:barre

-référence
-couleur1
-couleur2
-couleur3
etc.....

table2:code

-codeBarre
-référence
-couleur1
-couleur2
-couleur3

je cherche donc a faire un lien entre les 2 tables pour que sur mon tableau finale je n'ai qu'une seul référence et ensuite les quantités par couleurs sur la même ligne.

j'espère avoir était asse claire, c'est pas évident d'expliquer

le code PHP:
	  <?php 
    
//requete des reference
    $requete = mysql_query("SELECT reference, blanc, beige, rouge, vert, grisAntique, rougeDeMars, vertOlive, sienne, dune, bleuOrage, vertAntique FROM barre ORDER BY reference", $connexion);

if($requete)
{
while($ligne = mysql_fetch_array($requete))
{
$nbre++;
//affichage des reference
echo '
 '.$ligne['reference'].',
'.$ligne['blanc'].',
'.$ligne['beige'].',
'.$ligne['rouge'].',
'.$ligne['vert'].',
'.$ligne['grisAntique'].',
'.$ligne['rougeDeMars'].',
'.$ligne['vertOlive'].',
'.$ligne['sienne'].',
'.$ligne['dune'].',
'.$ligne['bleuOrage'].',
'.$ligne['vertAntique'].',

';
 				
}
//echo '</table>';
mysql_free_result($requete);
 }
 else
 {
echo "Impossible d'exécuter la requête de sélection !
";
 }

  ?>

je suis débutant, si le code n'est pas "propre" j'en suis désolé...
pour le moment le code affiche seulement les données de la table "barre"

25 réponses

Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 11
25 mars 2010 à 14:15
J'ai donc changé la structure de la table code_barre.

-- phpMyAdmin SQL Dump
-- version 3.2.0.1
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Jeu 25 Mars 2010 à 14:02
-- Version du serveur: 5.1.37
-- Version de PHP: 5.2.10

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Base de données: `test`
--

-- --------------------------------------------------------

--
-- Structure de la table `code_barre`
--

CREATE TABLE `code_barre` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `couleur_reference_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `couleur_reference_id` (`couleur_reference_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;

--
-- Contenu de la table `code_barre`
--

INSERT INTO `code_barre` VALUES(1, 'TOTO', 1);
INSERT INTO `code_barre` VALUES(2, 'TATA', 3);
INSERT INTO `code_barre` VALUES(3, 'TITI', 2);
INSERT INTO `code_barre` VALUES(4, 'TUTU', 7);
INSERT INTO `code_barre` VALUES(5, 'HELLO', 3);
INSERT INTO `code_barre` VALUES(6, 'MOTO', 2);
INSERT INTO `code_barre` VALUES(7, 'TEST', 4);
INSERT INTO `code_barre` VALUES(8, 'TEST1', 4);

--
-- Contraintes pour les tables exportées
--

--
-- Contraintes pour la table `code_barre`
--
ALTER TABLE `code_barre`
  ADD CONSTRAINT `code_barre_ibfk_1` FOREIGN KEY (`couleur_reference_id`) REFERENCES `couleur_myreference` (`id`);


J'ai viré quantité et ajouter une colonne "name" juste pour différencier les code barres identiques.

Chaque code barre à donc le droit à sa ligne. Et pour connaitre les quantité il suffi donc de compter les codes barre qui ont la même paire Référence/couleur.

Étant donné la façon dont nous avions construit la base de donnée, rien de plus simple, il suffit de compter le nombre de codes barre qui ont la même colonne "couleur_reference_id".

On va donc changer la ligne :
<?php
$requete_qtt = mysql_query("SELECT quantite  FROM code_barre cb INNER JOIN couleur_myreference cr ON cb.couleur_reference_id=cr.id WHERE cr.myreference_id=".$row['id']." AND cr.couleur_id=".$couleur['id'], $connexion) or die("erreur sql");
?>

Par :
<?php
$requete_qtt = mysql_query("SELECT COUNT(cb.id) as somme FROM code_barre cb INNER JOIN couleur_myreference cr ON cb.couleur_reference_id=cr.id WHERE cr.myreference_id=".$row['id']." AND cr.couleur_id=".$couleur['id'], $connexion) or die("erreur sql : ".mysql_error());
?>


Voyons en détail les changements dans la requête :

"SELECT COUNT(cb.id) as somme" -> On compte le nombre de lignes retournées par la requête



_________________________________
Min iPomme
0
cs_lesims1000 Messages postés 26 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 21 novembre 2011
25 mars 2010 à 19:08
j'ai remplacé les lignes de code et recrée la table code_barre, et voici se que sa donne:
lien
0
Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 11
25 mars 2010 à 19:19
Oué faut appeler la somme aussi :
<?php
if(mysql_num_rows($requete_qtt)==0)
{
$nbr = '-';	
}
else
{
// Je récup la quantité...
$nbr = mysql_fetch_assoc($requete_qtt);
$nbr = $nbr['somme'];
}
?>



_________________________________
Min iPomme
0
cs_lesims1000 Messages postés 26 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 21 novembre 2011
25 mars 2010 à 19:37
cool !!! =)

mega merci !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 11
25 mars 2010 à 20:32
Si tu veux référencer les noms et les quantités , il te suffi de reprendre l'ancienne structure et d'ajouter une colonne nom dans ta table.

_________________________________
Min iPomme
0
Rejoignez-nous