moteur toujours en panne

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : moteur toujours en panne

par pingoo » 14 oct. 2005, 15:40

En partie oui lorsque je lance la requête sur phpmyadmin cela fonctionne mais pas sur ma page.

par mere-teresa » 14 oct. 2005, 10:55

Est-ce que c'est vraiment résolu ??

par pingoo » 14 oct. 2005, 09:50

C'est bon ca fonctionne je l'ai juste un peu modifié :

Code : Tout sélectionner

FROM (fk_produits as fk1 LEFT JOIN inter as fk3 ON fk1.id = fk3.id_prod) LEFT JOIN fk_auto as fk2 ON fk2.id_auto = fk3.id_auto1
Merci pour votre aide et bonne journée

par zeus » 14 oct. 2005, 09:29

:shock: :afraid:

Code : Tout sélectionner

Dépendance croisée dans une clause OUTER JOIN. Vérifiez la condition ON

C'est quoi cette erreur :lol:
Vérifie si les noms des champs dans les clause ON sont valides.

par pingoo » 14 oct. 2005, 09:26

Cela me donne une erreur mysql :

Code : Tout sélectionner

Dépendance croisée dans une clause OUTER JOIN. Vérifiez la condition ON

par zeus » 13 oct. 2005, 08:47

Dans ce cas là, il faut que tu fasses des LEFT JOIN. Le serveur de données va aller chercher dans la table à gauche de la jointure l'intégralité des lignes et va associer une ligne de la table de droite si elle existe. Si elle n'existe pas, il y aura des champs vide

Code : Tout sélectionner

SELECT fk1.cat, fk1.id, fk1.rub, fk1.titre, fk1.pseudom, fk1.ville, fk1.nomDestination1, fk1.departement, fk1.prix, fk1.id, DATE_FORMAT(fk1.date, '%d.%m.%y') date, SUBSTRING(fk1.description,1,200) AS description, fk2.id_auto, fk2.marques, fk2.departement, fk2.prix, fk2.date, fk3.id_prod, fk3.id_auto1 FROM (fk_produits as fk1 LEFT JOIN fk_auto as fk2 ON fk1.id = fk3.id_prod) LEFT JOIN inter as fk3 ON fk2.id_auto = fk3.id_auto1
Dans cette requete, l'intégralité de la table fk1 sera retournée, le lignes de la table fk2 qui ont une reférence dans la table fk1. Et même chose pour fk3, avec référence dans fk2

par pingoo » 12 oct. 2005, 20:42

oui c'est ca

par zeus » 12 oct. 2005, 14:05

J'ai pas lu le post en entier.

Tu veux que l'intégralité des données de la table fk1 soient affichées avec les données de la table fk3 qui lui sont associées si elles existe, c'est ça ?

par pingoo » 12 oct. 2005, 13:59

Le résultat est exactement identique je pense que mon erreur doit etre au niveau de la base de donnée.
Base intermédiaire :

Code : Tout sélectionner

CREATE TABLE `inter` ( `id_prod` int(10) NOT NULL default '0', `id_auto1` int(10) NOT NULL default '0' ) TYPE=MyISAM; # # Contenu de la table `inter` # INSERT INTO `inter` VALUES (6, 1); INSERT INTO `inter` VALUES (7, 7); INSERT INTO `inter` VALUES (8, 3); INSERT INTO `inter` VALUES (9, 4); INSERT INTO `inter` VALUES (10, 5); INSERT INTO `inter` VALUES (12, 6); INSERT INTO `inter` VALUES (13, 2);
Je ne sais pas si la jointure est bien établie?

par zeus » 12 oct. 2005, 11:44

Tu paut faire des jointures avec JOIN

Code : Tout sélectionner

SELECT fk1.cat, fk1.id, fk1.rub, fk1.titre, fk1.pseudom, fk1.ville, fk1.nomDestination1, fk1.departement, fk1.prix, fk1.id, DATE_FORMAT(fk1.date, '%d.%m.%y') date, SUBSTRING(fk1.description,1,200) AS description, fk2.id_auto, fk2.marques, fk2.departement, fk2.prix, fk2.date, fk3.id_prod, fk3.id_auto1 FROM (fk_produits as fk1 JOIN fk_auto as fk2 ON fk1.id = fk3.id_prod) JOIN inter as fk3 ON fk2.id_auto = fk3.id_auto1
Mais si tu utilises des tables avec des gros volumes de données (miliers d'enregistrements) pensent bien à créer des indexs sur fk1.id, fk3.id_prod, fk2.id_auto et fk3.id_auto1 sinon ta requete va prendre des heures

par Invité » 12 oct. 2005, 11:33

J'ais en partie assimilé le notion de jointure mais le problème et que mes données ce mélange lors de l'affichage?
Voici mon code :

Code : Tout sélectionner

SELECT fk1.cat, fk1.id, fk1.rub, fk1.titre, fk1.pseudom, fk1.ville, fk1.nomDestination1, fk1.departement, fk1.prix, fk1.id, DATE_FORMAT(fk1.date, '%d.%m.%y') date, SUBSTRING(fk1.description,1,200) AS description, fk2.id_auto, fk2.marques, fk2.departement, fk2.prix, fk2.date, fk3.id_prod, fk3.id_auto1 FROM fk_produits as fk1, fk_auto as fk2, inter as fk3 where fk1.id = fk3.id_prod AND fk2.id_auto = fk3.id_auto1
En plus du mélange cela ne m'affiche que 7 résultat puisque une condition (fk1.id = fk3.id_prod ) n'est vrai que 7 fois.
Voici la structure de ma table intérmédiaire :

Code : Tout sélectionner

CREATE TABLE `inter` ( `id_prod` int(10) NOT NULL default '0', `id_auto1` int(10) NOT NULL default '0' ) TYPE=MyISAM;
Ca fait deux jour que j'y travail et ca commence à devenir vraiment :evil: .
Merci pour votre aide

par pingoo » 10 oct. 2005, 11:33

OK merci je vais m'y mettre.

par Cyrano » 10 oct. 2005, 10:16

Ça va être difficile de te résumer un cours complet sur la modélisation de base de données. Une visite sur developpez.com te donnera plein d'infos et des tutos sur le sujet.

par pingoo » 10 oct. 2005, 09:32

Je comprend en partie mais je n'ais pas la moindre idée de comment mettre en pratique.

par Cyrano » 10 oct. 2005, 09:04

Ben là, c'est sur: je t'ai fait une suggestion d'optimisation et le nombre de table a maigri pas mal, mais comme je t'avais dit, j,ai fait ça à l'arrache en 10mn: une base de données, ça se pense, ça se modélise et ça se valide si possible.

Je comprends bien ce que tu veux faire, mais effectivement, il faudrait passer une grosse journée pour créer un vrai dictionnaire de données, ensuite pour modéliser un modèle conceptuel de données avant même de commencer à construire la base. Alors est-ce que cette dernière phrase te parle un peu ou c'est du chinois pour toi ?