Bonjour,
Je viens vers vous car j'ai un problème, je m'explique je suis entrain de développer une petite application en php qui aura pour simple bute d'afficher des données enregistrer.
Pour afficher certain donnée j'ai du créer des "vues" (en local) mais lors du déploiement de l'application sur le serveur je me rend compte que la version de Mysql présent sur le poste est une 4.1 l'utilisation des vues n'étant pas prise en compte sur cette version. L'idée serai dans un premier temps trouvé une solution pour palier l'utilisation des vues dans mysql. Et s'il y a pas de solution je verrai avec l'administrateur s'il peuvent le mettre à jour mysql.
Je vous montre la vue que j'ai crée
le nom de la vue: yy_date_de_livraison_dune_demande
SELECT demande_ou_projet.IdDemande,
demande_se_trouve_dans_etat.Date_entree
AS PremierDeDate_entree
FROM demande_ou_projet
INNER JOIN demande_se_trouve_dans_etat
ON demande_ou_projet.IdDemande = demande_se_trouve_dans_etat.IdDemande
WHERE (((demande_se_trouve_dans_etat.Code_etat)="LID"))
GROUP BY demande_ou_projet.IdDemande
cette vu je l'utilise dans une autre requête.
SELECT demande_ou_projet.IdDemande, Left(LIBELLE_FORFAIT_BUDGET,20)
AS Projet, demande_ou_projet.IdClientDemande, Left(Libelle,15)
AS Intitule, demande_ou_projet.Date_livraison_prevue,
yy_date_de_livraison_dune_demande.PremierDeDate_entree
AS Livraison_reelle,
demande_ou_projet.Date_reception, demande_ou_projet.Type_demande, demande_ou_projet.niveau_de_severite
FROM sous_systeme
INNER JOIN ((forfait_budget
INNER JOIN demande_ou_projet
ON forfait_budget.ID_FORFAIT_BUDGET = demande_ou_projet.REF_FORFAIT_BUDGET)
LEFT JOIN yy_date_de_livraison_dune_demande
ON demande_ou_projet.IdDemande =yy_date_de_livraison_dune_demande.IdDemande)
ON sous_systeme.IdSousSyst = forfait_budget.REF_SOUS_SYSTEME
GROUP BY demande_ou_projet.IdDemande,
Left(LIBELLE_FORFAIT_BUDGET,20), demande_ou_projet.IdClientDemande,
Left(Libelle,15), demande_ou_projet.Date_livraison_prevue,
yy_date_de_livraison_dune_demande.PremierDeDate_entree,
demande_ou_projet.Date_reception, demande_ou_projet.Type_demande,
demande_ou_projet.niveau_de_severite, sous_systeme.IdAppli
HAVING (((Left(LIBELLE_FORFAIT_BUDGET,20))="S/M Europe" Or (Left(LIBELLE_FORFAIT_BUDGET,20))="S/M France")
AND ((yy_date_de_livraison_dune_demande.PremierDeDate_entree) Between "03/02/2011" And "03/02/2011" ) AND ((sous_systeme.IdAppli)="DEV"))
Avez vous un autre moyen de récrire cette requête?
J'ai pensé au requête imbriqué mais je vous pas trop comment l'utiliser dans mon cas.
Serait il possible de stocker une requête dans une variable en php par exemple?
Je reste à votre entière disposition pour toute questions ou information supplémentaire.
Merci
MySQL 4.1 est vraiment moisit. Changez de version.
Je ne sais même pas si MySQL 4.1 gère correctement les sous requêtes.
De toute façon vous aurez besoin d'une jointure sur la table yy_date_de_livraison_dune_demande puisque vous affichez un de ces champs dans le select
Par contre le from je ne le ferais pas sur sous_systeme, mais sur demande_ou_projet, puisque vous n'utilisez aucun champ de sous_systeme dans le select.
Merci neoprog67 pour cette reponse rapide et les précisions apportées sur les requêtes. L'idéal pour moi serai de faire une mise à jour du mysql. J'ai une question Quel peut etre l'impact d'une montée de version de MySQL sur le serveur? A part les points positifs biensur :-)
Impacts sur le serveur, gain de performances...
Après sur les applications MySQL, il peut y avoir des soucis de compatibilité sur certains points, pour ma part, les changements de version MySQL se sont toujours bien passés.