IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Problème avec limit. [SQL-Server]


Sujet :

PHP & Base de données

  1. #1
    Membre émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    Par défaut Problème avec limit.
    Bon voila je désiré faire un limit avec mssql, mais ca n'existe pas j'ai donc suivi la FAQ, et j'ai réussi a faire cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //C'est un echo de ma requête
    SELECT * FROM ( SELECT TOP 1 AR_Ref, AR_Design, FA_CodeFamille FROM ( SELECT TOP 9 AR_Ref, AR_Design, FA_CodeFamille FROM F_ARTICLE ) AS tbl1 ) AS tbl2 WHERE FA_CodeFamille='SYSTAM'
    Mais ca n'affiche rien du tout, il y as bien des enregistrements.

    Voici le code de l'affichage pour le moment
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $sql = "SELECT * FROM ( ";
    	$sql .= "SELECT TOP ".$g_nbr." AR_Ref, AR_Design, FA_CodeFamille FROM ( ";
    	$sql .= "SELECT TOP ".$g_maxnbr." AR_Ref, AR_Design, FA_CodeFamille FROM  F_ARTICLE ) AS tbl1 ) AS tbl2 WHERE FA_CodeFamille='$g_famille'";
    	echo($sql);
    	$req = mssql_query($sql);
    	echo('<p><img src="res/ban-top_pub.jpg" width="600" height="100"></p>');
    	echo('<table width="600" border="0" cellspacing="0" cellpadding="0">');
    	while($data = mssql_fetch_array($req)){
    		echo('<hr>'); 
    		echo($data['AR_Design'].'<br>');
    		echo($data['FA_CodeFamille'].'<br>');
    		echo($data['AR_Ref'].'<br><hr>');
    	}
    Je comprend pas ou j'ai déconné car je n'est aucun message d'erreur.
    Merci à vous.
    Règles du club -> Cliquez-ici
    FAQ Hardware -> Cliquez-ici
    Vous avez résolu votre souci ->
    F1 et Google sont vos amis.

  2. #2
    Membre actif Avatar de Gaara-Manga
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Avril 2007
    Messages : 247
    Points : 239
    Points
    239
    Par défaut
    Oula je sais pas ce que t'essaye de faire mais t'a requête ne va pas du tout.
    On peut pas faire de SELECT dans un FROM (enfin pas a ma connaissance).
    Revoie ta requête surtout au niveau de la structure ou sinon dit nous ce que tu veux faire avec pour t'aider.

  3. #3
    Membre émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    Par défaut
    Bah je désire selectionner seulement par tranche de 9 dans ma base de données.
    En quelque sorte un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM matable WHERE machin='$truc' LIMIT 1,9
    Seulement voila ca varie et LIMIT n'existe pas en mssql, j'ai donc utilisé un tuto présent ici
    http://sqlserver.developpez.com/faq/?page=Jeu#Jeu2
    Règles du club -> Cliquez-ici
    FAQ Hardware -> Cliquez-ici
    Vous avez résolu votre souci ->
    F1 et Google sont vos amis.

  4. #4
    Membre actif Avatar de Gaara-Manga
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Avril 2007
    Messages : 247
    Points : 239
    Points
    239
    Par défaut
    Suffit juste de faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT TOP 10 * FROM matable WHERE machin='$truc'
    edit : a nan jsuis bête attend jvais essayer de trouver autre chose^^"

  5. #5
    Membre actif Avatar de Gaara-Manga
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Avril 2007
    Messages : 247
    Points : 239
    Points
    239
    Par défaut
    Bon j'ai fait un équivalent de limit avec les top j'ai testé sa marche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT * 
    FROM matable 
    WHERE Monid IN (SELECT TOP 20 Monid FROM matable) 
    AND Monid NOT IN (SELECT TOP 10 Monid FROM matable)
    AND machin='$truc'
    La il te retournera l'enregistrement 10 a 20.

    Bon j'ai pas trop compris comment tourner la requête dans l'article mais jla trouve très bizarre en tout cas^^

  6. #6
    Membre émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    Par défaut
    Je l'ai transformer en ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $sql = "SELECT AR_Ref, AR_Design, FA_CodeFamille FROM F_ARTICLE ";
    $sql .= "WHERE AR_Ref IN (SELECT TOP 20 AR_Ref FROM F_ARTICLE) ";
    $sql .= "AND AR_Ref NOT IN (SELECT TOP 10 AR_Ref FROM F_ARTICLE) ";
    $sql .= "AND FA_CodeFamille='$g_famille'";
    Mais pareil ca retourne rien le souci c'est que j'ai pas vraiment d'ID (ca vient d'un logiciel SAGE Gestion commercial.
    Je voie pas ou ca peut coincer c'est ca le pire.

    Edit
    En remplacant le AR_Ref dans les select top je recoie ce message, mais ca me semble logique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: mssql_query() [function.mssql-query]: message: Une seule expression peut �tre sp�cifi�e dans la liste de s�lection quand la sous-requ�te n'est pas introduite par EXISTS. (severity 16) in C:\wamp\www\galtier\aff_famille.php on line 27
    On me l'avait dit jamais commencé un truc en fin de semaine tu fini le WE HS, je commence à le croire.
    Règles du club -> Cliquez-ici
    FAQ Hardware -> Cliquez-ici
    Vous avez résolu votre souci ->
    F1 et Google sont vos amis.

  7. #7
    Membre actif Avatar de Gaara-Manga
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Avril 2007
    Messages : 247
    Points : 239
    Points
    239
    Par défaut
    Regarde quels sont tes clés primaire t'en as forcément.
    Et si t'a clé primaire ce constitue de plusieurs champ bah t'a juste à la formé en fesant par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WHERE MonChampCle1+MonChampCle2 IN (SELECT TOP 20 MonChampCle1+MonChampCle2


    Mais normalement sa marche si ya une clé unique ce qui dans un logiciel comme sage il n'ont pas oublié de mettre de clé primaire^^

  8. #8
    Membre émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    Par défaut
    Hum dans la doc de sage j'ai ceci dit en clé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Index
    Nom Champs de l’index
    PK_CBMARQ_F_ARTICLE
    (cbMarq) (Unique, Ordonné) Uniquement utilisé en SQL
    IAR_REF (AR_Ref) (Unique, Non modifiable)
    IAR_DESIGN (AR_Design, AR_Ref)
    IAR_FAMILLE (FA_CodeFamille, AR_Ref)
    IAR_RACC (AR_Raccourci)
    IAR_CBARRE (AR_CodeBarre)
    IAR_SUBSTITUT (AR_Substitut)
    IAR_REFSOM (AR_Sommeil, AR_Ref)
    IAR_DESIGNSOM (AR_Sommeil, AR_Design, AR_Ref)
    IAR_FAMILLESOM (AR_Sommeil, FA_CodeFamille, AR_Ref)
    Mais ca me semble être un peu trop, vais plancher plus sur le souci ca doit être un truc tout bête qui déconne.

    [Edit]
    Ca commence mal je crois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Warning: mssql_query() [function.mssql-query]: message: 'PK_CBMARQ_F_ARTICLE' : nom de colonne incorrect. (severity 16) in C:\wamp\www\galtier\aff_famille.php on line 27
    Règles du club -> Cliquez-ici
    FAQ Hardware -> Cliquez-ici
    Vous avez résolu votre souci ->
    F1 et Google sont vos amis.

  9. #9
    Membre actif Avatar de Gaara-Manga
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Avril 2007
    Messages : 247
    Points : 239
    Points
    239
    Par défaut
    Tient j'avais jamais vu une doc comme sa^^

    Le mieux serait de voir sur la table directement mais sinon on dirait que c'est soit PK_CBMARQ_F_ARTICLE soit IAR_REF.

    Essaye les 2 séparément et ensuite les 2 ensembles si sa marche pas^^

  10. #10
    Membre émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    Par défaut
    Pareil avec IAR_Ref, ca m'etonneria que c'est chamsp existe en faite surtout, à la base j'ai utilisé power AMC pour me faire un schéma des tables voulues, et aucun de ces champs n'est dans la liste.
    Le seul truc étrange pour moi ce sont des champs cbXXX genre cbAR_Ref de type non défini.

    Au pire si Lundi j'ai pas vu le truc je le ferai à la paluche man (je stock en tableau et fait le tri sur le tableau, c'est moche et lourd mais bon j'ai peu de temps comme d'hab ^^).
    Règles du club -> Cliquez-ici
    FAQ Hardware -> Cliquez-ici
    Vous avez résolu votre souci ->
    F1 et Google sont vos amis.

  11. #11
    Membre actif Avatar de Gaara-Manga
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Avril 2007
    Messages : 247
    Points : 239
    Points
    239
    Par défaut
    Ya pas moyen que tu vois les tables dans un analyseur de requête ou autre outil du genre ?

    Comme sa au moins tu serais fixé^^

  12. #12
    Membre émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    Par défaut
    Euh la tu me pose une colle ^^"
    Je peux aller directement sur le serveur de donnée (SQL SERVER) donc je suppose que oui j'ai accés à un analyseur de requête, en gros tu me conseil de testé directement la requête sur le serveur pour voir ?

    (Comme si je testé les requetes mysql sur la fenetre ms-dos y'as bon ?)

    Oui je parait ignard mais bon ca fait 2jrs que j'ai découvert mssql ^^"
    Règles du club -> Cliquez-ici
    FAQ Hardware -> Cliquez-ici
    Vous avez résolu votre souci ->
    F1 et Google sont vos amis.

  13. #13
    Membre actif Avatar de Gaara-Manga
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Avril 2007
    Messages : 247
    Points : 239
    Points
    239
    Par défaut
    En faite ce que jpropose c'est :

    - T'ouvre Microsoft SQL Server Management Studio.

    - Tu te connectes sur le serveur ou ce situe sage.

    - Dans l'explorateur d'objet (menu coter gauche) tu sélectionne ton serveur puis dans Bases de données tu vas dans ta bases sage.

    - Une fois sur ta base tu cherches la table concerné puis tu clics dessus pour ensuite aller dans colonnes.

    - L'a tu verras le nom de tes champs.

    Les clés primaires sont en forme de clé doré, et les clé secondaire argenté.
    Et comme sa tu sera quel champ utilisé pour ta requête (et puis comme sa si tu veux tu pourras tester directement ta requête également )

  14. #14
    Membre émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    Par défaut
    En faite tu vas rire, le problème c'est que la requête était fausse en soit.
    On faisait un top 10-20 sur toutes la base, donc ca prenais les premiers enregistrement, et forcément dans les premiers y'as pas forcément ceux que je recherche en faisant cela ca marche du tonnere.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT * FROM F_ARTICLE
    WHERE AR_Ref IN (SELECT TOP 20 AR_Ref FROM F_ARTICLE WHERE FA_CodeFamille='HEINE')
    AND AR_Ref NOT IN (SELECT TOP 10 AR_Ref FROM F_ARTICLE WHERE FA_CodeFamille='HEINE')
    Bon là c'est le cas HEINE qui débute environ à 250 enregistrements plus bas et ca marche.
    En tout cas merci de ton coup de patte j'aurai pas tilté sinon.
    Règles du club -> Cliquez-ici
    FAQ Hardware -> Cliquez-ici
    Vous avez résolu votre souci ->
    F1 et Google sont vos amis.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec <limits>
    Par micheldup dans le forum C++
    Réponses: 8
    Dernier message: 10/06/2008, 00h26
  2. problème avec LIMIT
    Par naje83 dans le forum Débuter
    Réponses: 0
    Dernier message: 18/12/2007, 16h55
  3. [HSQLDB] problème avec un SELECT utilisant LIMIT
    Par don_quichotte dans le forum Autres SGBD
    Réponses: 5
    Dernier message: 12/04/2007, 23h08
  4. Problème avec LIMIT
    Par Marconico dans le forum Requêtes
    Réponses: 3
    Dernier message: 06/12/2006, 17h49
  5. [MySQL] problème avec LIMIT
    Par gtraxx dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 10/10/2006, 14h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo