PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 02-10-2010 08:18:14

Anthotill
Membre
Inscription : 14-03-2010
Messages : 81

Jointures Mysql

Bonjour à tous,

Je découvre les jointures Mysql, un vrai bonheur !

En fait, pour le moment, je n'utilise que INNER JOIN mais j'ai un souci.

Je voudrais comparer des résultats d'inventaires, j'ai dans la table "ancien_stock" les produits qui étaient en stocks avant l'ouverture de l'inventaire et dans l'autre table "nouveau_stock", les produits qui ont été effectivement comptés et donc ajoutés à cette table "nouveau_stock".

Comment puis-je comparer ces deux tables à la fin de l'inventaire pour afficher les écarts d'inventaires ? (exemple : le produit 125 était présent dans l'ancien stock mais pas dans le nouveau, merci de vérifier)

Si j'utilise INNER JOIN, je n'aurais aucun résultat puisque 125 n'a pas été trouvé dans le nouveau stock ...

Pourriez vous m'aidez sur ce point s'il vous plaît ?

Merci à tous,
Antho

Hors ligne

#2 02-10-2010 08:25:41

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Jointures Mysql

Saluton,
C'est là que LEFT JOIN va pouvoir t'aider.
Si tu fournis la structure des tables (Résultat d'un SHOW CREATE TABLE sur chacune des tables) je pense pouvoir te proposer un début de solution.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#3 08-10-2010 07:19:24

Anthotill
Membre
Inscription : 14-03-2010
Messages : 81

Re : Jointures Mysql

Bonjour Maljuna et pardon pour le délais de réponse...

Voici le résultat du show demandé:

Sur table ancien stock:

CREATE TABLE `ancien_stock` (\n `id` int(16) NOT NULL auto_increment,\n `code_barre` int(15) NOT NULL default '0',\n `num_serie` varchar(255) NOT NULL default '0',\n `modele` varchar(150) NOT NULL default '',\n `pn_formex` varchar(100) NOT NULL default '',\n `numero_bl` varchar(150) NOT NULL default '',\n `date_reception` datetime NOT NULL default '0000-00-00 00:00:00',\n `date_creation` datetime NOT NULL default '0000-00-00 00:00:00',\n `id_fournisseur` int(16) NOT NULL default '0',\n `grade` char(1) NOT NULL default '',\n `etat` enum('ESTOCK','HSTOCK','REPAR') NOT NULL default 'ESTOCK',\n `contenu` varchar(200) NOT NULL default '',\n `remarque` mediumtext NOT NULL,\n `photo` varchar(150) NOT NULL default '',\n `PVHT` int(11) NOT NULL default '0',\n `typologie` enum('OCCAS','RECON','NEUF') NOT NULL default 'OCCAS',\n `diff_config` mediumtext NOT NULL,\n `date_expedition` datetime NOT NULL default '0000-00-00 00:00:00',\n `numero_be` varchar(150) NOT NULL default '',\n `id_fournisseur_expedition` int(10) NOT NULL default '0',\n UNIQUE KEY `num_serie` (`num_serie`),\n KEY `id` (`id`,`num_serie`,`numero_bl`,`id_fournisseur`)\n) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='TABLE DES ANCIENS PRODUITS'

Sur table nouveau_stock:

CREATE TABLE `laptopservice_inventaire` (\n  `id` int(16) NOT NULL auto_increment,\n  `id_produit` int(15) NOT NULL default '0',\n  `etat` char(1) NOT NULL default '1',\n  KEY `id` (`id`)\n) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='INVENTAIRE'

Merci pour ton aide
Antho

Hors ligne

#4 08-10-2010 13:33:39

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Jointures Mysql

Ça sera sûrement plus lisible comme ça

CREATE TABLE `ancien_stock` (`id` INT(16) NOT NULL AUTO_INCREMENT,
                             `code_barre` INT(15) NOT NULL DEFAULT '0',
                             `num_serie` VARCHAR(255) NOT NULL DEFAULT '0',
                             `modele` VARCHAR(150) NOT NULL DEFAULT '',
                             `pn_formex` VARCHAR(100) NOT NULL DEFAULT '',
                             `numero_bl` VARCHAR(150) NOT NULL DEFAULT '',
                             `date_reception` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
                             `date_creation` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
                             `id_fournisseur` INT(16) NOT NULL DEFAULT '0',
                             `grade` CHAR(1) NOT NULL DEFAULT '',
                             `etat` enum('ESTOCK','HSTOCK','REPAR') NOT NULL DEFAULT 'ESTOCK',
                             `contenu` VARCHAR(200) NOT NULL DEFAULT '',
                             `remarque` mediumtext NOT NULL,
                             `photo` VARCHAR(150) NOT NULL DEFAULT '',
                             `PVHT` INT(11) NOT NULL DEFAULT '0',
                             `typologie` enum('OCCAS','RECON','NEUF') NOT NULL DEFAULT 'OCCAS',
                             `diff_config` mediumtext NOT NULL,
                             `date_expedition` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
                             `numero_be` VARCHAR(150) NOT NULL DEFAULT '',
                             `id_fournisseur_expedition` INT(10) NOT NULL DEFAULT '0',
            UNIQUE KEY `num_serie` (`num_serie`),
            KEY `id` (`id`,`num_serie`,`numero_bl`,`id_fournisseur`)
            )
ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='TABLE DES ANCIENS PRODUITS'

CREATE TABLE `laptopservice_inventaire` (`id` INT(16) NOT NULL AUTO_INCREMENT,
                                         `id_produit` INT(15) NOT NULL DEFAULT '0',
                                         `etat` CHAR(1) NOT NULL DEFAULT '1',
                              KEY `id` (`id`)
                              )
ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='INVENTAIRE'

Je regarderai cela ce soir, là je n'ai pas le temps.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#5 08-10-2010 18:03:25

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Jointures Mysql

SELECT lesNomsDeColonneQuiVontBien
FROM ancien_stock a
LEFT JOIN laptopservice_inventaire
ON i.idproduit=a.id
WHERE i.idproduit IS NULL

si dans la table laptopservice_inventaire il faut faire porter la jointure avec la table ancien_stock comme décrit ci-dessus.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

Pied de page des forums