Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & SQL-Server
PHP & SQL-Server Forum d'entraide sur SQL-Server avec PHP. Avant de poster -> FAQ SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/07/2008, 14h46   #1
Modérateur
 
Avatar de SirDarken
 
Eric Willems
Développeur Web
Inscription : février 2004
Messages : 895
Détails du profil
Informations personnelles :
Nom : Eric Willems
Âge : 30
Localisation : France, Hérault (Languedoc Roussillon)

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

Informations forums :
Inscription : février 2004
Messages : 895
Points : 1 065
Points : 1 065
Envoyer un message via MSN à SirDarken Envoyer un message via Skype™ à SirDarken
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 :
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 :
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.
SirDarken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2008, 14h51   #2
Membre confirmé
 
Avatar de Gaara-Manga
 
Inscription : avril 2007
Messages : 247
Détails du profil
Informations personnelles :
Localisation : France, Vienne (Poitou Charente)

Informations forums :
Inscription : avril 2007
Messages : 247
Points : 213
Points : 213
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.
Gaara-Manga est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2008, 14h56   #3
Modérateur
 
Avatar de SirDarken
 
Eric Willems
Développeur Web
Inscription : février 2004
Messages : 895
Détails du profil
Informations personnelles :
Nom : Eric Willems
Âge : 30
Localisation : France, Hérault (Languedoc Roussillon)

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

Informations forums :
Inscription : février 2004
Messages : 895
Points : 1 065
Points : 1 065
Envoyer un message via MSN à SirDarken Envoyer un message via Skype™ à SirDarken
Bah je désire selectionner seulement par tranche de 9 dans ma base de données.
En quelque sorte un
Code :
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
SirDarken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2008, 15h09   #4
Membre confirmé
 
Avatar de Gaara-Manga
 
Inscription : avril 2007
Messages : 247
Détails du profil
Informations personnelles :
Localisation : France, Vienne (Poitou Charente)

Informations forums :
Inscription : avril 2007
Messages : 247
Points : 213
Points : 213
Suffit juste de faire un
Code :
SELECT TOP 10 * FROM matable WHERE machin='$truc'
edit : a nan jsuis bête attend jvais essayer de trouver autre chose^^"
Gaara-Manga est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2008, 15h15   #5
Membre confirmé
 
Avatar de Gaara-Manga
 
Inscription : avril 2007
Messages : 247
Détails du profil
Informations personnelles :
Localisation : France, Vienne (Poitou Charente)

Informations forums :
Inscription : avril 2007
Messages : 247
Points : 213
Points : 213
Bon j'ai fait un équivalent de limit avec les top j'ai testé sa marche.

Code :
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^^
Gaara-Manga est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2008, 15h39   #6
Modérateur
 
Avatar de SirDarken
 
Eric Willems
Développeur Web
Inscription : février 2004
Messages : 895
Détails du profil
Informations personnelles :
Nom : Eric Willems
Âge : 30
Localisation : France, Hérault (Languedoc Roussillon)

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

Informations forums :
Inscription : février 2004
Messages : 895
Points : 1 065
Points : 1 065
Envoyer un message via MSN à SirDarken Envoyer un message via Skype™ à SirDarken
Je l'ai transformer en ceci
Code :
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 :
Warning: mssql_query() [function.mssql-query]: message: Une seule expression peut &#65533;tre sp&#65533;cifi&#65533;e dans la liste de s&#65533;lection quand la sous-requ&#65533;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.
SirDarken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2008, 16h50   #7
Membre confirmé
 
Avatar de Gaara-Manga
 
Inscription : avril 2007
Messages : 247
Détails du profil
Informations personnelles :
Localisation : France, Vienne (Poitou Charente)

Informations forums :
Inscription : avril 2007
Messages : 247
Points : 213
Points : 213
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 :
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^^
Gaara-Manga est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2008, 16h59   #8
Modérateur
 
Avatar de SirDarken
 
Eric Willems
Développeur Web
Inscription : février 2004
Messages : 895
Détails du profil
Informations personnelles :
Nom : Eric Willems
Âge : 30
Localisation : France, Hérault (Languedoc Roussillon)

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

Informations forums :
Inscription : février 2004
Messages : 895
Points : 1 065
Points : 1 065
Envoyer un message via MSN à SirDarken Envoyer un message via Skype™ à SirDarken
Hum dans la doc de sage j'ai ceci dit en clé
Code :
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 :
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
SirDarken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2008, 17h07   #9
Membre confirmé
 
Avatar de Gaara-Manga
 
Inscription : avril 2007
Messages : 247
Détails du profil
Informations personnelles :
Localisation : France, Vienne (Poitou Charente)

Informations forums :
Inscription : avril 2007
Messages : 247
Points : 213
Points : 213
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^^
Gaara-Manga est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2008, 17h27   #10
Modérateur
 
Avatar de SirDarken
 
Eric Willems
Développeur Web
Inscription : février 2004
Messages : 895
Détails du profil
Informations personnelles :
Nom : Eric Willems
Âge : 30
Localisation : France, Hérault (Languedoc Roussillon)

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

Informations forums :
Inscription : février 2004
Messages : 895
Points : 1 065
Points : 1 065
Envoyer un message via MSN à SirDarken Envoyer un message via Skype™ à SirDarken
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 ^^).
SirDarken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2008, 17h29   #11
Membre confirmé
 
Avatar de Gaara-Manga
 
Inscription : avril 2007
Messages : 247
Détails du profil
Informations personnelles :
Localisation : France, Vienne (Poitou Charente)

Informations forums :
Inscription : avril 2007
Messages : 247
Points : 213
Points : 213
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é^^
Gaara-Manga est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2008, 17h52   #12
Modérateur
 
Avatar de SirDarken
 
Eric Willems
Développeur Web
Inscription : février 2004
Messages : 895
Détails du profil
Informations personnelles :
Nom : Eric Willems
Âge : 30
Localisation : France, Hérault (Languedoc Roussillon)

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

Informations forums :
Inscription : février 2004
Messages : 895
Points : 1 065
Points : 1 065
Envoyer un message via MSN à SirDarken Envoyer un message via Skype™ à SirDarken
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 ^^"
SirDarken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2008, 17h58   #13
Membre confirmé
 
Avatar de Gaara-Manga
 
Inscription : avril 2007
Messages : 247
Détails du profil
Informations personnelles :
Localisation : France, Vienne (Poitou Charente)

Informations forums :
Inscription : avril 2007
Messages : 247
Points : 213
Points : 213
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 )
Gaara-Manga est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2008, 09h19   #14
Modérateur
 
Avatar de SirDarken
 
Eric Willems
Développeur Web
Inscription : février 2004
Messages : 895
Détails du profil
Informations personnelles :
Nom : Eric Willems
Âge : 30
Localisation : France, Hérault (Languedoc Roussillon)

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

Informations forums :
Inscription : février 2004
Messages : 895
Points : 1 065
Points : 1 065
Envoyer un message via MSN à SirDarken Envoyer un message via Skype™ à SirDarken
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 :
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.
SirDarken est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h30.


 
 
 
 
Partenaires

Hébergement Web