Aller au contenu
View in the app

A better way to browse. Learn more.

Next

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[SQL]Erreur requête imbriquée

Featured Replies

Posté(e)

Bonjour,

J'ai sur mon pc d'installer phpMyAdmin 2.6.1 et lorsque j'execute :

SELECT *
FROM fusion_lan
WHERE lan_temps <0
AND lan_avenir =1
AND lan_temps
IN (

SELECT MAX( lan_temps )
FROM fusion_lan
WHERE lan_temps <0
AND lan_avenir =1
)

Ca marche tres bien mais des que je l'execute sur le serveur phpmyadmin de mon hebergeur qui est en version phpMyAdmin 2.4.0 ça me retourne :

Erreur

requête SQL : 

SELECT *
FROM fusion_lan
WHERE lan_temps < 0 AND lan_avenir = 1 AND lan_temps
IN (

SELECT MAX( lan_temps )
FROM fusion_lan
WHERE lan_temps < 0 AND lan_avenir = 1
)

MySQL a répondu:

Erreur de syntaxe près de 'SELECT MAX( lan_temps )  FROM fusion_lan WHERE lan_temps < 0 AND' à la ligne 1

Quelqu'un a t'il une idée et une solution ?

Merci d'avance.

Modifié par X-K4l1

Posté(e)

Pourquoi avoir mis des espaces avant et après "lan_temps" ? :transpi:;)SQL: MAX Function

Essaies sans.

SELECT *
FROM fusion_lan
WHERE lan_temps <0
AND lan_avenir =1
AND lan_temps
IN (

SELECT MAX(lan_temps)
FROM fusion_lan
WHERE lan_temps <0
AND lan_avenir =1
)

Posté(e)
  • Auteur

Que j'en mette ou nan ça change rien et puis il les rajoute tout seul les espaces.

Posté(e)

PhpMyAdmin n'est pas la base de données mais un moyen d'y accéder.

Il faudrait déjà comparer la version de la BDD que tu as chez, et celle de ton hébergeur.

Posté(e)
  • Auteur

On vient de me dire que le problème vient de la requête imbriqué qui n'est géré car partir de la version 4.1

Et qu'il n'ya qu'un solution, sauvegarder le résultat intermèdiaire... mais comment ?

Posté(e)

Et pourquoi pas simplement :

SELECT *
FROM fusion_lan
WHERE lan_temps <0
AND lan_avenir =1
AND lan_temps = MAX(lan_temps)

:D

Posté(e)
  • Auteur

Et pourquoi pas simplement :

SELECT *
FROM fusion_lan
WHERE lan_temps <0
AND lan_avenir =1
AND lan_temps = MAX(lan_temps)

:D

Ca me donne comme erreur :

Erreur

requête SQL : 

SELECT *
FROM fusion_lan
WHERE lan_temps < 0 AND lan_avenir = 1 AND lan_temps = MAX( lan_temps )

MySQL a répondu:

Utilisation invalide de la clause GROUP

  • 2 semaines après...
Posté(e)

Chez moi : MySQL 4.1.9-max

Chez eux : MySQL 4.0.15-max-nt

effectivement le probleme vient bien des versions mysql de l'hébergeur qui ne gère pas les requetes imbriquées.

la meilleur solution que j'ai trouvé, c'est de faire 2 requetes différentes qui évidemment demandera plus de temps.

tu mets les résultats de ton select imbriquer dans un tableau et tu boucles pour avoir les résultats du 1er select.

  • 3 semaines après...
Posté(e)

Quelques infos qui pourraient t'être utile :

OVH (100 balles que tu parles d'eux :craint: ) compte effectuer une migration vers MySQL 5.1 bientôt. A suivre donc...

Utiliser MAX dans une clause WHERE est insensé puisque la valeur MAX ne peut être évaluée qu'après les conditions de "filtrage" du WHERE

Une solution à ton problème :

SELECT *

FROM fusion_lan

WHERE lan_temps <0

AND lan_avenir =1

ORDER BY lan_temps DESC LIMIT 1;

Les résultats sont triés par lan_temps décroissant, ton premier résultat est donc celui qui t'intéresse (et autant limiter à 1 résultat...)

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.