Rechercher : dans
Par :

Requete sql

Dernière réponse le 20 jui 2004 à 01:04:18 rucht, le 15 jui 2004 à 14:30:25 
 Signaler ce message aux modérateurs

Bonjour tout le monde !!!

j' ai un probleme ! ( sinon je serai pas en train d' ecrire ce post me direz vous ... )

voila :

j' ai un tableau a troi champ "utile" : 'titre' , 'no' , 'serie'

c pour ranger des boukin

j' aimerai affichez le titre du dernier no de chaque serie !

quelle est la bonne requete pour faire exactement sa ??

sa fait trois jour que je galaire !

help please !!! ( appel desepere...)

rucht ( qui galaire meme en vacance !!! )

1

yann, le 15 jui 2004 à 14:39:48

Tu peut faire

select last (titre) from tatable group by series order by no

Répondre à yann

2

rucht, le 15 jui 2004 à 14:48:56

Il y a un erreur !!!

voila :
Erreur

requête SQL :

SELECT last(

titre
)
FROM TABLE
GROUP BY serie
ORDER BY no

MySQL a répondu:


#1064 - Erreur de syntaxe près de '( titre )
FROM TABLE
GROUP BY serie
ORDER BY no' à la ligne 1

je ne connait pas la fonction 'last' donc je ne vois pas ce qui cloche ci qq 'un voit ...

rucht ( qui cherche quand meme... )

Répondre à rucht

3

blux, le 15 jui 2004 à 15:54:34

La fonction last est propre à ACCESS, me semble-t'il...
En SQL standard, il existe max qui renvoie la plus grande valeur d'un champ.

A+ Blux

 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"

Répondre à blux

4

LeSousss, le 15 jui 2004 à 16:04:07

Slt,
je ne suis pas sur mais essaye ca :
select distinct(serie), max(no), titre from table
dis moi si ca va

Répondre à LeSousss

6

rucht, le 15 jui 2004 à 19:10:43

Non:

Erreur

requête SQL :

SELECT DISTINCT (

serie
), max( no ) , titre
FROM `TABLE`
LIMIT 0 , 30

MySQL a répondu:


#1140 - Mélanger les colonnes GROUP (MIN(),MAX(),COUNT()...) avec des colonnes normales est interdit s'il n'y a pas de clause GROUP BY


et je vois pas commen y remedier...

rucht ( qui va chercher ... )

Répondre à rucht

5

grofwa, le 15 jui 2004 à 16:24:32

Je dirais comme ceci :

select titre
from table t1, (select max(no)max_no, serie from table group by serie) t2
where t1.NO = t2.max_no
and t1.serie = t2.serie


En Oracle, ça fonctionnera.
Ne vous souciez pas de n'être pas remarqué ; cherchez 
plutôt à faire quelque chose de remarquable [Confucius]

Répondre à grofwa

7

rucht, le 15 jui 2004 à 19:13:49
  • +1

Sa marche pas non plus :

Erreur

requête SQL :

SELECT titre
FROM `TABLE` t1, (


SELECT max( no ) max_no, serie
FROM TABLE GROUP BY serie
)t2
WHERE t1.NO = t2.max_no AND t1.serie = t2.serie

MySQL a répondu:


#1064 - Erreur de syntaxe près de 'SELECT max( no ) max_no, serie
FROM TABLE GROUP BY serie )t2
' à la ligne 3


mais vu que j' utilise mysql c 'est peut etre normal ...

rucht ( qui va chercher de ce cote la aussi ... )

Répondre à rucht

8

grofwa, le 15 jui 2004 à 21:48:05

Evidemment, si j'avais lu tout, j'aurais vu :-(

Tu es obligé de faire une seule requête ? Sinon, tu fais

SELECT max( no ) max_no, serie 
FROM TABLE GROUP BY serie


et puis pour chaque max_no et serie, tu vas chercher le titre de la BD
c'est des bd, non ? Je dis ça parce que je l'ai fait pour moi, mais c'était en delphi à l'époque.

michael.

Ne vous souciez pas de n'être pas remarqué ; cherchez 
plutôt à faire quelque chose de remarquable [Confucius]

Répondre à grofwa

9

grofwa, le 15 jui 2004 à 22:14:05

Bon, d'après la doc Mysql (mais j'ai pas réussi à trouver à partir de quelle version), ceci est possible :

SELECT titre, serie
FROM tab
WHERE (numero, serie) IN
( SELECT max(numero) as numero, serie
FROM tab
GROUP BY serie)

Mais sinon, en cherchant un peu sur le net (google(mysql select where +in group by subquery)), j'ai trouvé le même problème que toi, et il confirme ce que j'ai mis dans le commentaire précédent.

A toi de voir !
http://www.webhostingtalk.com/showthread.php?threadid=211593­

Ne vous souciez pas de n'être pas remarqué ; cherchez 
plutôt à faire quelque chose de remarquable [Confucius]

Répondre à grofwa

10

rucht, le 17 jui 2004 à 22:01:57

Oui c 'est pour des bd !

j' ai pas pu teste ta methode j' ai pas le bon ordi sous la main ...

d' apres ce que j' ai compri (je debute ... )
il est possible de faire sa :

SELECT titre
FROM tab
WHERE (numero, serie) IN
( SELECT max(numero) as numero, serie
FROM tab
GROUP BY serie)


ou le
serie
dans le premier select est indispenssable ?

rucht ( qui utilise un methode speciale pour traiter ces info ... )

Répondre à rucht

12

rucht, le 18 jui 2004 à 11:17:03

Requête SQL :

SELECT titre, serie
FROM `table`
WHERE (

numero, serie
)
IN (

SELECT max( numero ) AS numero, serie
FROM `table`
GROUP BY serie
)
LIMIT 0 , 30

MySQL a répondu:


#1064 - Erreur de syntaxe près de ' serie )
IN (
SELECT max( numero ) AS numero, serie
FROM `tab' à la ligne 3

sa ne marche pas !!

:-(

rucht ( qui cherche ... )

Répondre à rucht

11

ric, le 18 jui 2004 à 08:43:54

Bonjour
Les requêtes imbriquées n'existent pas encore avec MySql.
Je crois que ce sera dans la version 4.1.
Il faut passer par les jointures.

Répondre à ric

13

rucht, le 18 jui 2004 à 11:19:08

Tu propose quoi ?

rucht ( qui sais pas utiliser les jointures ... )

Répondre à rucht

14

grofwa, le 19 jui 2004 à 10:46:37

Salut,

En MySql, tu peux faire ceci :

SELECT titre, MAX(numero), serie
FROM tab
GROUP BY serie

Et ça marche !!!!
(mais n'essaie pas sous Oracle !)

Michael.

Ne vous souciez pas de n'être pas remarqué ; cherchez 
plutôt à faire quelque chose de remarquable [Confucius]

Répondre à grofwa

15

 rucht, le 20 jui 2004 à 01:04:18

Je sais mais je ne veut que le titre du plus grand numero !

j' ai une methode speciale pour traiter les info et sa bugue quand je recupere plusieur chose avec le select ( mais apres j' ai des faciliter partout ... ) quand je fais sa la requete marche mais sa bugue quand je traite l' info !

il me faut donc un " select titre from ... "

rucht ( qui n' utilise pas la meilleure methode mais qui la trouve pratique ... )

Répondre à rucht