Bonjour,
Afin d'éviter de lancer trop de requêtes et de dépasser la limite des 30 secondes pour un script php, je dois optimiser une série d'INSERT et de UPDATE grâce à INNER JOIN.
J'utilise avec succès depuis pas mal de temps les INNER JOIN pour des requête SELECT, mais je ne m'étais jamais essayé aux INSERT et aux UPDATE et je dois avouer que là, je suis un peu perdu.
J'ai ainsi créé deux requêtes : une SELECT et une UPDATE. Ces deux requêtes ont exactement les mêmes WHERE et INNER JOIN. Pourtant, la requête SELECT trouve une seule valeur dans ma base répondant aux critères (ce qui est la bonne réponse), alors que la UPDATE en trouve deux.
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 SELECT note.id_site FROM note INNER JOIN site INNER JOIN banniere728x90 INNER JOIN credit WHERE site.id_membre!=24 AND site.langue="fr" AND site.actif="1" AND banniere728x90.id_site=site.id_site AND credit.id_membre=site.id_membre AND credit.credit>0 AND note.id_site_out=site.id_site AND note.id_site_in=16 AND note.format="728x90"
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 UPDATE note INNER JOIN site INNER JOIN banniere728x90 INNER JOIN credit SET note.note_site = note.note_site + 1 WHERE site.id_membre!=24 AND site.langue="fr" AND site.actif="1" AND banniere728x90.id_site=site.id_site AND credit.id_membre=site.id_membre AND credit.credit>0 AND note.id_site_out=site.id_site AND note.id_site_in=16 AND note.format="728x90"
Le paramètre qui ne semble pas fonctionner dans la deuxième requête est la correspondance entre "note.id_site_out=site.id_site" et "banniere728x90.id_site=site.id_site" car le UPDATE modifie une entrée qui existe dans les tables "note" et "site" mais pas dans "banniere728x90".
Savez-vous où je me suis trompé ?
Merci d'avance pour vos réponses, ou au moins d'avoir lu jusqu'ici.
Partager