je voudrais joindre trois tables: livre + edition + langue
voici ma bdd
-- phpMyAdmin SQL Dump
-- version 4.5.4.1
-- http://www.phpmyadmin.net
--
-- Client : localhost
-- Généré le : Dim 12 Mai 2019 à 14:48
-- Version du serveur : 5.7.11
-- Version de PHP : 5.6.18
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
--
-- Base de données : `owlbook`
--
-- --------------------------------------------------------
--
-- Structure de la table `categorie`
--
DROP TABLE IF EXISTS `categorie`;
CREATE TABLE `categorie` (
`id` int(11) NOT NULL,
`nom` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Structure de la table `edition`
--
DROP TABLE IF EXISTS `edition`;
CREATE TABLE `edition` (
`id` int(11) NOT NULL,
`nom` varchar(150) NOT NULL,
`date_publication` datetime NOT NULL,
`isbn` varchar(150) NOT NULL,
`nb_page` int(3) NOT NULL,
`couverture` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Contenu de la table `edition`
--
INSERT INTO `edition` (`id`, `date_publication`, `isbn`, `nb_page`, `couverture`) VALUES
(2, '2019-05-12 00:00:00', 'test', 23, 'test');
-- --------------------------------------------------------
--
-- Structure de la table `etat`
--
DROP TABLE IF EXISTS `etat`;
CREATE TABLE `etat` (
`id` int(11) NOT NULL,
`nom` varchar(50) DEFAULT NULL,
`description` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Contenu de la table `etat`
--
INSERT INTO `etat` (`id`, `nom`, `description`) VALUES
(2, 'Bon', 'Bon etat');
-- --------------------------------------------------------
--
-- Structure de la table `genre`
--
DROP TABLE IF EXISTS `genre`;
CREATE TABLE `genre` (
`id` int(11) NOT NULL,
`nom` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Structure de la table `langue`
--
DROP TABLE IF EXISTS `langue`;
CREATE TABLE `langue` (
`id` int(11) NOT NULL,
`locale` varchar(50) NOT NULL,
`originale` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Contenu de la table `langue`
--
INSERT INTO `langue` (`id`, `locale`, `originale`) VALUES
(2, 'Francais', 'Anglais');
-- --------------------------------------------------------
--
-- Structure de la table `librairie`
--
DROP TABLE IF EXISTS `librairie`;
CREATE TABLE `librairie` (
`id` int(11) NOT NULL,
`nom` varchar(50) NOT NULL,
`ville` varchar(50) NOT NULL,
`codepostal` varchar(50) NOT NULL,
`pays` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Structure de la table `livre`
--
DROP TABLE IF EXISTS `livre`;
CREATE TABLE `livre` (
`id` int(11) NOT NULL,
`titre` varchar(50) NOT NULL,
`sousTitre` varchar(50) NOT NULL,
`resume` varchar(255) NOT NULL,
`image` varchar(25) NOT NULL,
`etat` int(11) NOT NULL DEFAULT '0',
`edition` int(11) NOT NULL DEFAULT '0',
`mot_cle` varchar(255) NOT NULL,
`langue` int(11) DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Contenu de la table `livre`
--
INSERT INTO `livre` (`id`, `titre`, `sousTitre`, `resume`, `image`, `etat`, `edition`, `mot_cle`, `langue`) VALUES
(3, 'test', 'test test', 'test test test', 'test.jpg', 2, 2, 'test', 2);
-- --------------------------------------------------------
--
-- Structure de la table `role`
--
DROP TABLE IF EXISTS `role`;
CREATE TABLE `role` (
`id` int(11) NOT NULL,
`nom` varchar(100) DEFAULT NULL,
`description` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Structure de la table `serie`
--
DROP TABLE IF EXISTS `serie`;
CREATE TABLE `serie` (
`id` int(11) NOT NULL,
`num` varchar(50) NOT NULL,
`nom` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Structure de la table `utilisateur`
--
DROP TABLE IF EXISTS `utilisateur`;
CREATE TABLE `utilisateur` (
`id` int(11) NOT NULL,
`nom` varchar(50) NOT NULL,
`prenom` varchar(50) NOT NULL,
`email` varchar(50) NOT NULL,
`password` varchar(255) NOT NULL,
`adresse` varchar(255) NOT NULL,
`codepostal` varchar(255) NOT NULL,
`ville` varchar(50) DEFAULT NULL,
`role` int(11) DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Contenu de la table `utilisateur`
--
INSERT INTO `utilisateur` (`id`, `nom`, `prenom`, `email`, `password`, `adresse`, `codepostal`, `ville`, `role`) VALUES
(2, 'point test', 'test', 'test@test.test', '$2y$10$UDr86ZS/aMW7Hb11XE1CT.bBzlkXpaaqw.WCMtRV5R3LTtVbmXyVa', 'test', '12345', 'teste', 0);
--
-- Index pour les tables exportées
--
--
-- Index pour la table `categorie`
--
ALTER TABLE `categorie`
ADD PRIMARY KEY (`id`);
--
-- Index pour la table `edition`
--
ALTER TABLE `edition`
ADD PRIMARY KEY (`id`);
--
-- Index pour la table `etat`
--
ALTER TABLE `etat`
ADD PRIMARY KEY (`id`);
--
-- Index pour la table `genre`
--
ALTER TABLE `genre`
ADD PRIMARY KEY (`id`);
--
-- Index pour la table `langue`
--
ALTER TABLE `langue`
ADD PRIMARY KEY (`id`);
--
-- Index pour la table `librairie`
--
ALTER TABLE `librairie`
ADD PRIMARY KEY (`id`);
--
-- Index pour la table `livre`
--
ALTER TABLE `livre`
ADD PRIMARY KEY (`id`);
--
-- Index pour la table `role`
--
ALTER TABLE `role`
ADD PRIMARY KEY (`id`);
--
-- Index pour la table `serie`
--
ALTER TABLE `serie`
ADD PRIMARY KEY (`id`);
--
-- Index pour la table `utilisateur`
--
ALTER TABLE `utilisateur`
ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT pour les tables exportées
--
--
-- AUTO_INCREMENT pour la table `categorie`
--
ALTER TABLE `categorie`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT pour la table `edition`
--
ALTER TABLE `edition`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;
--
-- AUTO_INCREMENT pour la table `etat`
--
ALTER TABLE `etat`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;
--
-- AUTO_INCREMENT pour la table `genre`
--
ALTER TABLE `genre`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT pour la table `langue`
--
ALTER TABLE `langue`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;
--
-- AUTO_INCREMENT pour la table `librairie`
--
ALTER TABLE `librairie`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT pour la table `livre`
--
ALTER TABLE `livre`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;
--
-- AUTO_INCREMENT pour la table `role`
--
ALTER TABLE `role`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;
--
-- AUTO_INCREMENT pour la table `serie`
--
ALTER TABLE `serie`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT pour la table `utilisateur`
--
ALTER TABLE `utilisateur`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;
et voici la jointure que j'ai fais :
SELECT
req.titre AS livre,
edition.nom AS edition,
langue.originale AS langue,
langue.locale AS langue
FROM livre
INNER JOIN edition
ON livre.id = edition.id
INNER JOIN langue
ON livre.id = langue.originale
INNER JOIN langue
ON livre.id = langue.locale
INNER JOIN (
SELECT livre.id AS livre,
edition.nom AS nom
FROM langue
INNER JOIN livre
ON langue.id = livre.titre
) AS req
ON req.livre = livre.id;
et j'ai botenue ceci : #1066 - Table/alias: 'langue' non unique
SELECT
req.titre AS livre,
edition.nom AS edition,
langue.originale AS langue,
langue.locale AS langue
FROM livre
INNER JOIN edition
ON livre.id = edition.id
INNER JOIN langue L1
ON livre.id = L1.originale
INNER JOIN langue L2
ON livre.id = L2.locale
INNER JOIN (
SELECT livre.id AS livre,
edition.nom AS nom
FROM langue
INNER JOIN livre
ON langue.id = livre.titre
) AS req
ON req.livre = livre.id;
sauf que cette erreur est apparu :
#1054 - Champ 'edition.nom' inconnu dans field list
Pas douée, je veux bien, mais tu sais quand même que si tu veux récupérer la colonne "nom" de la table "edition", il faut sélectionner la table "edition" non ?
Là tu fais une jointure sur les tables "langue et "livre"...
SELECT
req.titre AS livre,
edition.nom AS edition,
langue.originale AS langue,
langue.locale AS langue
FROM livre
INNER JOIN edition
ON livre.id = edition.id
INNER JOIN langue L1
ON livre.id = L1.originale
INNER JOIN langue L2
ON livre.id = L2.locale
INNER JOIN (
SELECT livre.id AS livre,
edition.nom AS nom
FROM langue
INNER JOIN livre
ON langue.id = livre.titre
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Merci à tous. Vous pouvez me retrouver ici :
🌐 Visitez mon profil sur Comeup
🚀 Découvrez BeFreelancr
📱 Retrouvez-moi sur LinkedIn
N'oubliez pas d'activer les erreurs PDO.
Merci à tous. Vous pouvez me retrouver ici :
🌐 Visitez mon profil sur Comeup
🚀 Découvrez BeFreelancr
📱 Retrouvez-moi sur LinkedIn
N'oubliez pas d'activer les erreurs PDO.
Merci à tous. Vous pouvez me retrouver ici :
🌐 Visitez mon profil sur Comeup
🚀 Découvrez BeFreelancr
📱 Retrouvez-moi sur LinkedIn
N'oubliez pas d'activer les erreurs PDO.
Merci à tous. Vous pouvez me retrouver ici :
🌐 Visitez mon profil sur Comeup
🚀 Découvrez BeFreelancr
📱 Retrouvez-moi sur LinkedIn
N'oubliez pas d'activer les erreurs PDO.
Merci à tous. Vous pouvez me retrouver ici :
🌐 Visitez mon profil sur Comeup
🚀 Découvrez BeFreelancr
📱 Retrouvez-moi sur LinkedIn