Problème grosse requête PHP !

Problème grosse requête PHP ! - PHP - Programmation

Marsh Posté le 30-09-2009 à 14:59:26    

Bonjour tout le monde !
 
Voila je dois transcrire un programme ACCESS en PHP.
 
Sous access, des requetes sont definies, et dans certaines d'elles, des requetes font appel a d'autre requetes...
 
Voici un exemple access :
 

Code :
  1. INSERT INTO [Exposition crédit notation hors opcvm] ( Cd_etablissement, Note_retenue_poss, Ligne_conf, [%li], Decouvert, [%de], garnatie_données, [%gd], Engagement_HB, [%ehb], Total_expo_credit, [%tt] )
  2. SELECT [T-110-exposition Crédit Notation hors opcvm].Cd_etablissement, note.Note_retenue_poss, Sum([T-110-exposition Crédit Notation hors opcvm].SommeDeLigne_conf) AS Ligne_conf, "" AS [%li], Sum([T-110-exposition Crédit Notation hors opcvm].SommeDeTirage_overdraft) AS Decouvert, "" AS [%de], Sum([T-110-exposition Crédit Notation hors opcvm].SommeDeGaranties_donnees) AS garnatie_données, "" AS [%gd], Sum([T-110-exposition Crédit Notation hors opcvm].SommeDeEngagements_HB) AS Engagement_HB, "" AS [%ehb], Sum([T-110-exposition Crédit Notation hors opcvm].SommeDeTotal_credit) AS Total_expo_credit, "" AS [%tt]
  3. FROM [note] LEFT JOIN [T-110-exposition Crédit Notation hors opcvm] ON note.Note_retenue_poss=[T-110-exposition Crédit Notation hors opcvm].Note_Retenue
  4. GROUP BY [T-110-exposition Crédit Notation hors opcvm].Cd_etablissement, note.Note_retenue_poss, "", "", "", "", ""
  5. HAVING ((([T-110-exposition Crédit Notation hors opcvm].Cd_etablissement)<>"" ));
  6. [/ :fou: code]
  7. Ci-dessus, [T-110-exposition Crédit Notation hors opcvm] est bel et bien une autre requete...
  8. Je me demande comment je peux bien faire de même en PHP...
  9. J'ai bien essayé ça :
  10. [code]$sql1 = "SELECT Reporting_test_neo.Cd_etablissement, Reporting_test_neo.Note_Retenue, Sum(Reporting_test_neo.Ligne_conf)
  11. AS Somme_De_Ligne_conf, Sum(Reporting_test_neo.Tirage_overdraft) AS Somme_De_Tirage_overdraft, Sum(Reporting_test_neo.Garanties_donnees)
  12. AS Somme_De_Garanties_donnees, Sum(Reporting_test_neo.Engagements_HB) AS Somme_De_Engagements_HB, Sum(Reporting_test_neo.Total_credit)
  13. AS Somme_De_Total_credit
  14. FROM Reporting_test_neo INNER JOIN date_Max ON Reporting_test_neo.Date=date_Max.Max_De_date_Multi_Mensuel
  15. GROUP BY Reporting_test_neo.Cd_etablissement, Reporting_test_neo.Note_Retenue, Reporting_test_neo.Date, Reporting_test_neo.Typ_ctpy,
  16. Reporting_test_neo.cd_Client_mixte
  17. HAVING (((Reporting_test_neo.Typ_ctpy) Not Like 'opcvm') AND ((Reporting_test_neo.cd_Client_mixte)='non mixte'));";
  18. $sql = "INSERT INTO exposition_credit_notation_hors_opcvm (cd_etablissement, note_retenue_poss, ligne_conf, per_li,
  19. decouvert, per_de, garantie_donnees, per_gd, engagement_hb, per_ehb, total_expo_credit, per_tt )
  20.      SELECT $sql1.cd_etablissement, note.note_retenue_poss,
  21.      Sum($sql1.somme_de_ligne_conf) AS ligne_conf, '' AS per_li,
  22.      Sum($sql1.somme_de_tirage_overdraft) AS decouvert, '' AS per_de,
  23.      Sum($sql1.somme_de_garanties_donnees) AS garantie_données, '' AS per_gd,
  24.      Sum($sql1.somme_de_engagements_hb) AS engagement_hb, '' AS per_ehb,
  25.      Sum($sql1.somme_de_total_credit) AS total_expo_credit, '' AS per_tt
  26.      FROM note LEFT JOIN $sql1
  27.      ON note.note_retenue_poss = $sql1.note_retenue
  28.      GROUP BY $sql1.cd_etablissement, note.note_retenue_poss, '', '', '', '', ''
  29.      HAVING ((($sql1.cd_etablissement)<>''));";


mais sans succès...
 
Avez-vous une idée???
 
Merci d'avance

Reply

Marsh Posté le 30-09-2009 à 14:59:26   

Reply

Marsh Posté le 30-09-2009 à 16:18:33    

$sql1.note_retenue ca ne marchera jamais y me semble. $sql1 c est une chaine de caractéres
 
moi je ferais un create view avec ta sql1 comme ca tu peux mettre la vue créé dans ta seconde requête
 
from tb1,lavue
where tb1.xxx=lavue.xxx
 
fait une recherche view mysql
 
ya surement plus simple  
 
tu peux aussi integrer la premiere dans le from de la seconde
 
from tb1,(select ....) as tb2
where tb1.xxx=tb2.xxx
 
je suis pas sur que <> fonctionne en mysql et tu as des ; en trop


Message édité par d@kn1ko le 30-09-2009 à 16:35:55
Reply

Marsh Posté le 30-09-2009 à 21:52:18    

C'est pas une question de php, c'est une question de SQL. Là ce que tu fais en php c'est juste n'importe-quoi.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 01-10-2009 à 10:20:45    

Il faut "juste" que tu comprennes ce que font tes requêtes. Une fois que t'as compris, ben tu les reformules pour MySQL en utilisant les sous-requêtes, voire les tables temporaires si y'a pas moyen de faire autrement.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed