cs_LABAUDE
Messages postés15Date d'inscriptionsamedi 19 juillet 2003StatutMembreDernière intervention 4 janvier 2006
-
16 sept. 2005 à 17:24
DuckyLuke
Messages postés28Date d'inscriptionlundi 4 novembre 2002StatutMembreDernière intervention30 septembre 2005
-
22 sept. 2005 à 17:19
Bonjour,
Impossible de convertir la requete suivante fonctionnant avec phpmyadmin en requete pour un site en asp et une base access. Pouvez vous m'aider?
SELECT DISTINCT (
dictionary_keywords.label_fr
), dictionary_concepts.id_indices, dictionary_keywords.id
FROM dictionary_keywords
INNER JOIN dictionary_concepts ON dictionary_keywords.id_concepts = dictionary_concepts.id
WHERE left( dictionary_keywords.label_fr, 1 ) = 'A' AND (
(
(
dictionary_concepts.id_indices
) = 1
)
)
GROUP BY dictionary_keywords.label_fr
ORDER BY dictionary_keywords.label_fr LIMIT 0 , 30
Dans ma page asp, j'ai écrit :
SELECT DISTINCT (dictionary_keywords.label_fr), dictionary_concepts.id_indices, dictionary_keywords.id FROM dictionary_keywords INNER JOIN dictionary_concepts ON dictionary_keywords.id_concepts = dictionary_concepts.id WHERE left(dictionary_keywords.label_fr,1)='A' AND (((dictionary_concepts.id_indices)=1)) GROUP BY dictionary_keywords.label_fr ORDER BY dictionary_keywords.label_fr;
J'obtiens le message d'erreur suivant :
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][Pilote ODBC Microsoft Access] Vous avez essayé d'exécuter une requête ne comprenant pas l'expression spécifiée 'id_indices' comme une partie de la fonction d'agrégat.
Lorsque je lance cette requete dans access, j'ai le message d'erreur suivant :
Vous avez essayé d'exécuter une requête ne comprenant pas l'expression spécifiée <nom> comme une partie de la fonction d'agrégat. (Erreur 3122)
Merci pour votre aide et j'espere qu'il y a une solution...
DuckyLuke
Messages postés28Date d'inscriptionlundi 4 novembre 2002StatutMembreDernière intervention30 septembre 2005 22 sept. 2005 à 11:30
Essaye de virer ton "GROUP BY ... HAVING ..." et mets un simple WHERE à la place... ;)
Tu peux pas faire un GROUP BY sur un élément que tu ne retrouves pas dans ton HAVING... Sur ce coup, MySQL est beaucoup trop permissif...
La bonne requête, c'est donc:
SELECT dictionary_keywords.label_fr, dictionary_concepts.id_indices, dictionary_keywords.id
FROM dictionary_concepts INNER JOIN dictionary_keywords ON dictionary_concepts.id = dictionary_keywords.id_concept
WHERE (Left(dictionary_keywords.label_fr,1))="A" AND ((dictionary_concepts.id_indices)="1")
ORDER BY dictionary_keywords.label_fr;
DuckyLuke
Messages postés28Date d'inscriptionlundi 4 novembre 2002StatutMembreDernière intervention30 septembre 2005 22 sept. 2005 à 12:03
Essaye de virer ton "GROUP BY ... HAVING ..." et mets un simple WHERE à la place... ;)
Tu peux pas faire un GROUP BY sur un élément que tu ne retrouves pas dans ton HAVING... Sur ce coup, MySQL est beaucoup trop permissif...
La bonne requête, c'est donc:
SELECT dictionary_keywords.label_fr, dictionary_concepts.id_indices, dictionary_keywords.id
FROM dictionary_concepts INNER JOIN dictionary_keywords ON dictionary_concepts.id = dictionary_keywords.id_concept
WHERE (Left(dictionary_keywords.label_fr,1))="A" AND ((dictionary_concepts.id_indices)="1")
ORDER BY dictionary_keywords.label_fr;
cs_LABAUDE
Messages postés15Date d'inscriptionsamedi 19 juillet 2003StatutMembreDernière intervention 4 janvier 2006 22 sept. 2005 à 12:39
J'ai modifié la requete, pour suivre tes conseils, mais j'ai le message d'erreur ci dessous :
SQLkeywords "SELECT dictionary_keywords.label_fr, dictionary_concepts.id_indices, dictionary_keywords.id FROM dictionary_concepts INNER JOIN dictionary_keywords ON dictionary_concepts.id dictionary_keywords.id_concept WHERE (Left(dictionary_keywords.label_fr,1))='"& u_letter &"' AND ((dictionary_concepts.id_indices)=1) ORDER BY dictionary_keywords.label_fr;"
Erreur de compilation Microsoft VBScript error '800a0401'
Fin d'instruction attendue
/iisHelp/common/500-100.asp, line 11 Dim objASPError, blnErrorWritten, strServername, strServerIP, strRemoteIP Dim strMethod, lngPos, datNow, strQueryString, strURL
--------------------------------------------------------------------------^
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'
[Microsoft][Pilote ODBC Microsoft Access] Trop peu de paramètres. 1 attendu.
/mondiv3/mi_fr/centre.asp, line 83
cs_LABAUDE
Messages postés15Date d'inscriptionsamedi 19 juillet 2003StatutMembreDernière intervention 4 janvier 2006 22 sept. 2005 à 15:33
J'ai essayé avec le A uniquement... et ca ne marche pas... Ma page est programmée en asp
La requete suivante fonctionne mais j'ai des doublons donc ca ne me satisfait pas :
SQLkeywords "SELECT DISTINCT (dictionary_keywords.label_fr), dictionary_concepts.id_indices, dictionary_keywords.id FROM dictionary_keywords INNER JOIN dictionary_concepts ON dictionary_keywords.id_concepts dictionary_concepts.id WHERE left(dictionary_keywords.label_fr,1)='"& u_letter &"' AND (((dictionary_concepts.id_indices)=1)) ORDER BY dictionary_keywords.label_fr;"
Voici la partie de code qui pose probleme :
<%
for counter = 65 to 90
' for next routine to create hyperlinks alphabetically targeted
' to the current page
%>
?u_letter=&#<%= counter %>;">;.gif" width="14" height="14" border="0">,
<% next %>
<%
if request.QueryString("u_letter") ="" then
else
u_letter=trim(request.querystring("u_letter"))
'if the user clicked a link then search the db
if u_letter<>"" then
' La requête qui va bien ;)SQLkeywords "SELECT DISTINCT (dictionary_keywords.label_fr), dictionary_concepts.id_indices, dictionary_keywords.id FROM dictionary_keywords INNER JOIN dictionary_concepts ON dictionary_keywords.id_concepts dictionary_concepts.id WHERE left(dictionary_keywords.label_fr,1)='"& u_letter &"' AND (((dictionary_concepts.id_indices)=1)) ORDER BY dictionary_keywords.label_fr;"'SQLkeywords "SELECT dictionary_keywords.label_fr, dictionary_concepts.id_indices, dictionary_keywords.id FROM dictionary_concepts INNER JOIN dictionary_keywords ON dictionary_concepts.id dictionary_keywords.id_concept WHERE (Left(dictionary_keywords.label_fr,1))='"& u_letter &"' AND ((dictionary_concepts.id_indices)=1) ORDER BY dictionary_keywords.label_fr;"'SQLkeywords "SELECT DISTINCT(dictionary_keywords.label_fr), MAX(dictionary_concepts.id_indices), max(dictionary_keywords.id) FROM dictionary_keywords as dictionary_keywords, dictionary_concepts as dictionary_concepts WHERE dictionary_keywords.id_concepts dictionary_concepts.id AND dictionary_keywords.label_fr = '"& u_letter &"' AND dictionary_concepts.id_indices = 1 GROUP BY dictionary_concepts.id_indices, dictionary_keywords.id ORDER BY dictionary_keywords.label_fr;"
' Récupère le recordset
Set keywords = server.createobject("ADODB.Recordset")
keywords.Open SQLkeywords, conn, 3, 3
'if the search ends in no results display a
'no results found mesage
if keywords.eof then
%>
Il n'y a aucun mot commençant par la lettre <%= u_letter %>
<%
else
%>
,
D,
A,
T,
C,
L,
<%
do while not keywords.eof
'display all observations found
%>
----
"><%= keywords("label_fr") %>,
<%
' La requête qui va bien ;)
SQLdefinition = "SELECT definition_fr FROM dictionary_keywords WHERE dictionary_keywords.id=" & keywords("id") & ""
' Récupère le recordset
Set definition = server.createobject("ADODB.Recordset")
definition.Open SQLdefinition, Conn, 3, 3
if definition("definition_fr")="" then
else
response.write ""
end if
definition.close : set definition = nothing
%>,
<%
SQLannuaire1 = "SELECT id_keyword FROM company_object_card_index_keywords WHERE company_object_card_index_keywords.id_keyword=" & keywords("id") & ""
' Récupère le recordset
Set annuaire1 = server.createobject("ADODB.Recordset")
annuaire1.Open SQLannuaire1, Conn, 3, 3
IF NOT annuaire1.EOF THEN
response.write ""
else
SQLannuaire2 = "SELECT id_keyword FROM company_object_card_paper_keywords WHERE company_object_card_paper_keywords.id_keyword=" & keywords("id") & ""
' Récupère le recordset
Set annuaire2 = server.createobject("ADODB.Recordset")
annuaire2.Open SQLannuaire2, Conn, 3, 3
IF NOT annuaire2.EOF THEN
response.write ""
else
SQLannuaire3 = "SELECT id_keyword FROM company_free_keywords WHERE company_free_keywords.id_keyword=" & keywords("id") & ""
' Récupère le recordset
Set annuaire3 = server.createobject("ADODB.Recordset")
annuaire3.Open SQLannuaire2, Conn, 3, 3
IF NOT annuaire3.EOF THEN
response.write ""
else
end if
annuaire3.close : set annuaire3 = nothing
end if
annuaire2.close : set annuaire2 = nothing
end if
annuaire1.close : set annuaire1 = nothing
%>,
<%
' La requête qui va bien ;)
SQLtemoignage = "SELECT id_keyword FROM company_object_expert_release_keywords WHERE company_object_expert_release_keywords.id_keyword=" & keywords("id") & ""
' Récupère le recordset
Set temoignage = server.createobject("ADODB.Recordset")
temoignage.Open SQLtemoignage, Conn, 3, 3
IF NOT temoignage.EOF THEN
response.write ""
else
end if
temoignage.close : set temoignage = nothing
%>,
<%
' La requête qui va bien ;)
SQLadvice = "SELECT advice_fr FROM dictionary_keywords WHERE dictionary_keywords.id=" & keywords("id") & ""
' Récupère le recordset
Set advice = server.createobject("ADODB.Recordset")
advice.Open SQLadvice, Conn, 3, 3
if advice("advice_fr")="" then
else
response.write ""
end if
advice.close : set advice = nothing
%>,
<%
' La requête qui va bien ;)
SQLliensutiles = "SELECT comment_fr FROM dictionary_keywords WHERE dictionary_keywords.id=" & keywords("id") & ""
' Récupère le recordset
Set liensutiles = server.createobject("ADODB.Recordset")
liensutiles.Open SQLliensutiles, Conn, 3, 3
if liensutiles("comment_fr")="" then
else
response.write ""
end if
liensutiles.close : set liensutiles = nothing
%>,
<%
keywords.movenext
loop
end if ' end check for obs
end if ' end check for user input
%>
<%
keywords.close : set keywords = nothing
%>
<%
end if
%></td>
DuckyLuke
Messages postés28Date d'inscriptionlundi 4 novembre 2002StatutMembreDernière intervention30 septembre 2005 22 sept. 2005 à 15:49
Entre ta requête qui fonctionne et celle que je propose, 2 trucs diffèrent:
- le DISTINCT
- la jointure que tu fais dans un sens et moi dans l'autre.
Essaye de jongler en modifiant l'un ou l'autre... Sinon, je ne vois pas... (et sans enregistrements pour faire des tests, c'est pas très facile... :P )
SQLkeywords "SELECT DISTINCT (dictionary_keywords.label_fr), dictionary_concepts.id_indices, dictionary_keywords.id FROM dictionary_keywords INNER JOIN dictionary_concepts ON dictionary_keywords.id_concepts dictionary_concepts.id WHERE left(dictionary_keywords.label_fr,1)='"& u_letter &"' AND (((dictionary_concepts.id_indices)=1)) ORDER BY dictionary_keywords.label_fr;"
'SQLkeywords "SELECT dictionary_keywords.label_fr, dictionary_concepts.id_indices, dictionary_keywords.id FROM dictionary_concepts INNER JOIN dictionary_keywords ON dictionary_concepts.id dictionary_keywords.id_concept WHERE (Left(dictionary_keywords.label_fr,1))='"& u_letter &"' AND ((dictionary_concepts.id_indices)=1) ORDER BY dictionary_keywords.label_fr;"