OVH Cloud OVH Cloud

Random

7 réponses
Avatar
Ado
Bonjour,

J'ai une base de donn=E9e (mdb) avec deux tables, une=20
contient des proposotions l'autre table des experts.

J'ai une requete sql (en vba) pour faire un random "=20
proposotions, experts ".

voici mon code suivant :

strSQL =3D "SELECT T_PROPOSALS.PROP_NUM,=20
T_PROPOSALS.PROP_PANEL, T_PROPOSALS.COUNTRY_CODE, " & _
"( SELECT TOP 1 E1.LAST_NAME FROM T_EXPERTS=20
E1 " & _
"WHERE E1.COUNTRY <>=20
T_PROPOSALS.COUNTRY_CODE " & _
"AND E1.PANEL =3D T_PROPOSALS.PROP_PANEL "=20
& _
"GROUP BY E1.LAST_NAME " & _
"HAVING COUNT (*) < 3 " & _
"ORDER BY Rnd(Len(E1.LAST_NAME))) AS=20
EXPERT1, " & _
"( SELECT TOP 1 E2.LAST_NAME FROM=20
T_EXPERTS E2 " & _
"WHERE E2.COUNTRY <>=20
T_PROPOSALS.COUNTRY_CODE " & _
"AND E2.PANEL =3D=20
T_PROPOSALS.PROP_PANEL " & _
"GROUP BY E2.LAST_NAME " & _
"HAVING COUNT (*) < 3 " & _
"ORDER BY Rnd(Len(E2.LAST_NAME))) AS=20
EXPERT2, " & _
"( SELECT TOP 1 E3.LAST_NAME FROM=20
T_EXPERTS E3 " & _
"WHERE E3.COUNTRY <>=20
T_PROPOSALS.COUNTRY_CODE " & _
"AND E3.PANEL =3D=20
T_PROPOSALS.PROP_PANEL " & _
"GROUP BY E3.LAST_NAME " & _
"HAVING COUNT (*) < 3 " & _
"ORDER BY Rnd(Len(E3.LAST_NAME)))=20
AS EXPERT3 " & _
"INTO tblTemp " & _
"FROM T_PROPOSALS " & _
"ORDER BY T_PROPOSALS.PROP_NUM;"

Ma question est :

Comment faire pour que : l'expert1 <> l'expert2 <>=20
l'expert3 et de d=E9finir le nombre maximale d'expert dans=20
la table enti=E8re.

Merci d'avance de votre aide.
N.B.: j'ai d=E9j=E0 essay=E9 sous la rubrique "ACCESS" mais=20
melheureusement je n'ai toujours pas de nouvel.

7 réponses

Avatar
Fred BROUARD
pourrais tu donner le texte de ta requête seule sans les & et guillements, cela
nous facilitrais la vie !

A +

Ado a écrit:
Bonjour,

J'ai une base de donnée (mdb) avec deux tables, une
contient des proposotions l'autre table des experts.

J'ai une requete sql (en vba) pour faire un random "
proposotions, experts ".

voici mon code suivant :

strSQL = "SELECT T_PROPOSALS.PROP_NUM,
T_PROPOSALS.PROP_PANEL, T_PROPOSALS.COUNTRY_CODE, " & _
"( SELECT TOP 1 E1.LAST_NAME FROM T_EXPERTS
E1 " & _
"WHERE E1.COUNTRY <>
T_PROPOSALS.COUNTRY_CODE " & _
"AND E1.PANEL = T_PROPOSALS.PROP_PANEL "
& _
"GROUP BY E1.LAST_NAME " & _
"HAVING COUNT (*) < 3 " & _
"ORDER BY Rnd(Len(E1.LAST_NAME))) AS
EXPERT1, " & _
"( SELECT TOP 1 E2.LAST_NAME FROM
T_EXPERTS E2 " & _
"WHERE E2.COUNTRY <>
T_PROPOSALS.COUNTRY_CODE " & _
"AND E2.PANEL =
T_PROPOSALS.PROP_PANEL " & _
"GROUP BY E2.LAST_NAME " & _
"HAVING COUNT (*) < 3 " & _
"ORDER BY Rnd(Len(E2.LAST_NAME))) AS
EXPERT2, " & _
"( SELECT TOP 1 E3.LAST_NAME FROM
T_EXPERTS E3 " & _
"WHERE E3.COUNTRY <>
T_PROPOSALS.COUNTRY_CODE " & _
"AND E3.PANEL =
T_PROPOSALS.PROP_PANEL " & _
"GROUP BY E3.LAST_NAME " & _
"HAVING COUNT (*) < 3 " & _
"ORDER BY Rnd(Len(E3.LAST_NAME)))
AS EXPERT3 " & _
"INTO tblTemp " & _
"FROM T_PROPOSALS " & _
"ORDER BY T_PROPOSALS.PROP_NUM;"

Ma question est :

Comment faire pour que : l'expert1 <> l'expert2 <>
l'expert3 et de définir le nombre maximale d'expert dans
la table entière.

Merci d'avance de votre aide.
N.B.: j'ai déjà essayé sous la rubrique "ACCESS" mais
melheureusement je n'ai toujours pas de nouvel.



--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
Avatar
Ado
le voilà :
SELECT T_PROPOSALS.PROP_NUM, T_PROPOSALS.PROP_PANEL,
T_PROPOSALS.COUNTRY_CODE,
( SELECT TOP 1 E1.LAST_NAME FROM T_EXPERTS E1
WHERE E1.COUNTRY <> T_PROPOSALS.COUNTRY_CODE
AND E1.PANEL = T_PROPOSALS.PROP_PANEL
GROUP BY E1.LAST_NAME
HAVING COUNT (*) < 3
ORDER BY Rnd(Len(E1.LAST_NAME))) AS EXPERT1,
( SELECT TOP 1 E2.LAST_NAME FROM T_EXPERTS E2
WHERE E2.COUNTRY <> T_PROPOSALS.COUNTRY_CODE
AND E2.PANEL = T_PROPOSALS.PROP_PANEL
GROUP BY E2.LAST_NAME
HAVING COUNT (*) < 3
ORDER BY Rnd(Len(E2.LAST_NAME))) AS EXPERT2,
( SELECT TOP 1 E3.LAST_NAME FROM T_EXPERTS E3
WHERE E3.COUNTRY <> T_PROPOSALS.COUNTRY_CODE
AND E3.PANEL = T_PROPOSALS.PROP_PANEL
GROUP BY E3.LAST_NAME
HAVING COUNT (*) < 3
ORDER BY Rnd(Len(E3.LAST_NAME))) AS EXPERT3
INTO tblTemp
FROM T_PROPOSALS
ORDER BY T_PROPOSALS.PROP_NUM;

Merci d'avance.
-----Message d'origine-----
pourrais tu donner le texte de ta requête seule sans les


& et guillements, cela
nous facilitrais la vie !

A +

Ado a écrit:
Bonjour,

J'ai une base de donnée (mdb) avec deux tables, une
contient des proposotions l'autre table des experts.

J'ai une requete sql (en vba) pour faire un random "
proposotions, experts ".

voici mon code suivant :

strSQL = "SELECT T_PROPOSALS.PROP_NUM,
T_PROPOSALS.PROP_PANEL, T_PROPOSALS.COUNTRY_CODE, " & _
"( SELECT TOP 1 E1.LAST_NAME FROM




T_EXPERTS
E1 " & _
"WHERE E1.COUNTRY <>
T_PROPOSALS.COUNTRY_CODE " & _
"AND E1.PANEL =




T_PROPOSALS.PROP_PANEL "
& _
"GROUP BY E1.LAST_NAME " & _
"HAVING COUNT (*) < 3 " & _
"ORDER BY Rnd(Len(E1.LAST_NAME))) AS
EXPERT1, " & _
"( SELECT TOP 1 E2.LAST_NAME FROM
T_EXPERTS E2 " & _
"WHERE E2.COUNTRY <>
T_PROPOSALS.COUNTRY_CODE " & _
"AND E2.PANEL =
T_PROPOSALS.PROP_PANEL " & _
"GROUP BY E2.LAST_NAME " & _
"HAVING COUNT (*) < 3 " & _
"ORDER BY Rnd(Len(E2.LAST_NAME)))




AS
EXPERT2, " & _
"( SELECT TOP 1 E3.LAST_NAME




FROM
T_EXPERTS E3 " & _
"WHERE E3.COUNTRY <>
T_PROPOSALS.COUNTRY_CODE " & _
"AND E3.PANEL =
T_PROPOSALS.PROP_PANEL " & _
"GROUP BY E3.LAST_NAME " & _
"HAVING COUNT (*) < 3 " & _
"ORDER BY Rnd(Len




(E3.LAST_NAME)))
AS EXPERT3 " & _
"INTO tblTemp " & _
"FROM T_PROPOSALS " & _
"ORDER BY T_PROPOSALS.PROP_NUM;"

Ma question est :

Comment faire pour que : l'expert1 <> l'expert2 <>
l'expert3 et de définir le nombre maximale d'expert




dans
la table entière.

Merci d'avance de votre aide.
N.B.: j'ai déjà essayé sous la rubrique "ACCESS" mais
melheureusement je n'ai toujours pas de nouvel.



--
Frédéric BROUARD, MVP SQL Server. Expert SQL /


spécialiste Delphi, web
Livre SQL - col. Référence :


http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros :


http://sqlpro.developpez.com
************************ www.datasapiens.com


*************************

.



Avatar
Fred BROUARD
Pour sélectionner tes 3 esperts, pourquoi ne pas faire quelque chose comme :

SELECT TOP 1 E1.LAST_NAME, E2.LAST_NAME, E3.LAST_NAME
FROM T_EXPERTS E1
INNER JOIN T_EXPERTS E2
ON E1.LAST_NAME <> E2.LAST_NAME
INNER JOIN T_EXPERTS E3
ON E1.LAST_NAME <> E3.LAST_NAME
AND E2.LAST_NAME <> E3.LAST_NAME
WHERE E1.COUNTRY <> T_PROPOSALS.COUNTRY_CODE
AND E1.PANEL = T_PROPOSALS.PROP_PANEL
AND E2.COUNTRY <> T_PROPOSALS.COUNTRY_CODE
AND E2.PANEL = T_PROPOSALS.PROP_PANEL
AND E3.COUNTRY <> T_PROPOSALS.COUNTRY_CODE
AND E3.PANEL = T_PROPOSALS.PROP_PANEL

A +

Ado a écrit:
le voilà :
SELECT T_PROPOSALS.PROP_NUM, T_PROPOSALS.PROP_PANEL,
T_PROPOSALS.COUNTRY_CODE,
( SELECT TOP 1 E1.LAST_NAME FROM T_EXPERTS E1
WHERE E1.COUNTRY <> T_PROPOSALS.COUNTRY_CODE
AND E1.PANEL = T_PROPOSALS.PROP_PANEL
GROUP BY E1.LAST_NAME
HAVING COUNT (*) < 3
ORDER BY Rnd(Len(E1.LAST_NAME))) AS EXPERT1,
( SELECT TOP 1 E2.LAST_NAME FROM T_EXPERTS E2
WHERE E2.COUNTRY <> T_PROPOSALS.COUNTRY_CODE
AND E2.PANEL = T_PROPOSALS.PROP_PANEL
GROUP BY E2.LAST_NAME
HAVING COUNT (*) < 3
ORDER BY Rnd(Len(E2.LAST_NAME))) AS EXPERT2,
( SELECT TOP 1 E3.LAST_NAME FROM T_EXPERTS E3
WHERE E3.COUNTRY <> T_PROPOSALS.COUNTRY_CODE
AND E3.PANEL = T_PROPOSALS.PROP_PANEL
GROUP BY E3.LAST_NAME
HAVING COUNT (*) < 3
ORDER BY Rnd(Len(E3.LAST_NAME))) AS EXPERT3
INTO tblTemp
FROM T_PROPOSALS
ORDER BY T_PROPOSALS.PROP_NUM;

Merci d'avance.

-----Message d'origine-----
pourrais tu donner le texte de ta requête seule sans les



& et guillements, cela

nous facilitrais la vie !

A +

Ado a écrit:

Bonjour,

J'ai une base de donnée (mdb) avec deux tables, une
contient des proposotions l'autre table des experts.

J'ai une requete sql (en vba) pour faire un random "
proposotions, experts ".

voici mon code suivant :

strSQL = "SELECT T_PROPOSALS.PROP_NUM,
T_PROPOSALS.PROP_PANEL, T_PROPOSALS.COUNTRY_CODE, " & _
"( SELECT TOP 1 E1.LAST_NAME FROM





T_EXPERTS

E1 " & _
"WHERE E1.COUNTRY <>
T_PROPOSALS.COUNTRY_CODE " & _
"AND E1.PANEL =





T_PROPOSALS.PROP_PANEL "

& _
"GROUP BY E1.LAST_NAME " & _
"HAVING COUNT (*) < 3 " & _
"ORDER BY Rnd(Len(E1.LAST_NAME))) AS
EXPERT1, " & _
"( SELECT TOP 1 E2.LAST_NAME FROM
T_EXPERTS E2 " & _
"WHERE E2.COUNTRY <>
T_PROPOSALS.COUNTRY_CODE " & _
"AND E2.PANEL =
T_PROPOSALS.PROP_PANEL " & _
"GROUP BY E2.LAST_NAME " & _
"HAVING COUNT (*) < 3 " & _
"ORDER BY Rnd(Len(E2.LAST_NAME)))





AS

EXPERT2, " & _
"( SELECT TOP 1 E3.LAST_NAME





FROM

T_EXPERTS E3 " & _
"WHERE E3.COUNTRY <>
T_PROPOSALS.COUNTRY_CODE " & _
"AND E3.PANEL =
T_PROPOSALS.PROP_PANEL " & _
"GROUP BY E3.LAST_NAME " & _
"HAVING COUNT (*) < 3 " & _
"ORDER BY Rnd(Len





(E3.LAST_NAME)))

AS EXPERT3 " & _
"INTO tblTemp " & _
"FROM T_PROPOSALS " & _
"ORDER BY T_PROPOSALS.PROP_NUM;"

Ma question est :

Comment faire pour que : l'expert1 <> l'expert2 <>
l'expert3 et de définir le nombre maximale d'expert





dans

la table entière.

Merci d'avance de votre aide.
N.B.: j'ai déjà essayé sous la rubrique "ACCESS" mais
melheureusement je n'ai toujours pas de nouvel.



--
Frédéric BROUARD, MVP SQL Server. Expert SQL /



spécialiste Delphi, web

Livre SQL - col. Référence :



http://sqlpro.developpez.com/bookSQL.html

Le site du SQL, pour débutants et pros :



http://sqlpro.developpez.com

************************ www.datasapiens.com



*************************

.









--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
Avatar
Fred BROUARD
Pour sélectionner tes 3 experts, pourquoi ne pas faire quelque chose comme :

SELECT TOP 1 E1.LAST_NAME, E2.LAST_NAME, E3.LAST_NAME
FROM T_EXPERTS E1
INNER JOIN T_EXPERTS E2
ON E1.LAST_NAME <> E2.LAST_NAME
INNER JOIN T_EXPERTS E3
ON E1.LAST_NAME <> E3.LAST_NAME
AND E2.LAST_NAME <> E3.LAST_NAME
WHERE E1.COUNTRY <> T_PROPOSALS.COUNTRY_CODE
AND E1.PANEL = T_PROPOSALS.PROP_PANEL
AND E2.COUNTRY <> T_PROPOSALS.COUNTRY_CODE
AND E2.PANEL = T_PROPOSALS.PROP_PANEL
AND E3.COUNTRY <> T_PROPOSALS.COUNTRY_CODE
AND E3.PANEL = T_PROPOSALS.PROP_PANEL

A +

Ado a écrit:
le voilà :
SELECT T_PROPOSALS.PROP_NUM, T_PROPOSALS.PROP_PANEL,
T_PROPOSALS.COUNTRY_CODE,
( SELECT TOP 1 E1.LAST_NAME FROM T_EXPERTS E1
WHERE E1.COUNTRY <> T_PROPOSALS.COUNTRY_CODE
AND E1.PANEL = T_PROPOSALS.PROP_PANEL
GROUP BY E1.LAST_NAME
HAVING COUNT (*) < 3
ORDER BY Rnd(Len(E1.LAST_NAME))) AS EXPERT1,
( SELECT TOP 1 E2.LAST_NAME FROM T_EXPERTS E2
WHERE E2.COUNTRY <> T_PROPOSALS.COUNTRY_CODE
AND E2.PANEL = T_PROPOSALS.PROP_PANEL
GROUP BY E2.LAST_NAME
HAVING COUNT (*) < 3
ORDER BY Rnd(Len(E2.LAST_NAME))) AS EXPERT2,
( SELECT TOP 1 E3.LAST_NAME FROM T_EXPERTS E3
WHERE E3.COUNTRY <> T_PROPOSALS.COUNTRY_CODE
AND E3.PANEL = T_PROPOSALS.PROP_PANEL
GROUP BY E3.LAST_NAME
HAVING COUNT (*) < 3
ORDER BY Rnd(Len(E3.LAST_NAME))) AS EXPERT3
INTO tblTemp
FROM T_PROPOSALS
ORDER BY T_PROPOSALS.PROP_NUM;

Merci d'avance.

-----Message d'origine-----
pourrais tu donner le texte de ta requête seule sans les



& et guillements, cela

nous facilitrais la vie !

A +

Ado a écrit:

Bonjour,

J'ai une base de donnée (mdb) avec deux tables, une
contient des proposotions l'autre table des experts.

J'ai une requete sql (en vba) pour faire un random "
proposotions, experts ".

voici mon code suivant :

strSQL = "SELECT T_PROPOSALS.PROP_NUM,
T_PROPOSALS.PROP_PANEL, T_PROPOSALS.COUNTRY_CODE, " & _
"( SELECT TOP 1 E1.LAST_NAME FROM





T_EXPERTS

E1 " & _
"WHERE E1.COUNTRY <>
T_PROPOSALS.COUNTRY_CODE " & _
"AND E1.PANEL =





T_PROPOSALS.PROP_PANEL "

& _
"GROUP BY E1.LAST_NAME " & _
"HAVING COUNT (*) < 3 " & _
"ORDER BY Rnd(Len(E1.LAST_NAME))) AS
EXPERT1, " & _
"( SELECT TOP 1 E2.LAST_NAME FROM
T_EXPERTS E2 " & _
"WHERE E2.COUNTRY <>
T_PROPOSALS.COUNTRY_CODE " & _
"AND E2.PANEL =
T_PROPOSALS.PROP_PANEL " & _
"GROUP BY E2.LAST_NAME " & _
"HAVING COUNT (*) < 3 " & _
"ORDER BY Rnd(Len(E2.LAST_NAME)))





AS

EXPERT2, " & _
"( SELECT TOP 1 E3.LAST_NAME





FROM

T_EXPERTS E3 " & _
"WHERE E3.COUNTRY <>
T_PROPOSALS.COUNTRY_CODE " & _
"AND E3.PANEL =
T_PROPOSALS.PROP_PANEL " & _
"GROUP BY E3.LAST_NAME " & _
"HAVING COUNT (*) < 3 " & _
"ORDER BY Rnd(Len





(E3.LAST_NAME)))

AS EXPERT3 " & _
"INTO tblTemp " & _
"FROM T_PROPOSALS " & _
"ORDER BY T_PROPOSALS.PROP_NUM;"

Ma question est :

Comment faire pour que : l'expert1 <> l'expert2 <>
l'expert3 et de définir le nombre maximale d'expert





dans

la table entière.

Merci d'avance de votre aide.
N.B.: j'ai déjà essayé sous la rubrique "ACCESS" mais
melheureusement je n'ai toujours pas de nouvel.



--
Frédéric BROUARD, MVP SQL Server. Expert SQL /



spécialiste Delphi, web

Livre SQL - col. Référence :



http://sqlpro.developpez.com/bookSQL.html

Le site du SQL, pour débutants et pros :



http://sqlpro.developpez.com

************************ www.datasapiens.com



*************************

.









--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
Avatar
Ado
Bonjour,

Merci pour votre réponse, j'ai essayé mais cela ne
fonctionne pas, je reçois un message « syntax error. In
query expression (SELECT TOP 1 E1.LAST_NAME .) ».

Voici mon code a nouveau :

"SELECT T_PROPOSALS.PROP_NUM, T_PROPOSALS.PROP_PANEL,
T_PROPOSALS.COUNTRY_CODE,
( SELECT TOP 1 E1.LAST_NAME, E2.LAST_NAME
FROM, E3.LAST_NAME FROM T_EXPERTS E1
INNER JOIN T_EXPERTS E2
ON E1.LAST_NAME <> E2.LAST_NAME
INNER JOIN T_EXPERTS E3
ON E3.LAST_NAME <> E2.LAST_NAME
AND E2.LAST_NAME <> E1.LAST_NAME
WHERE E1.COUNTRY <> T_PROPOSALS.COUNTRY_CODE
AND E1.PANEL = T_PROPOSALS.PROP_PANEL
AND E2.COUNTRY <> T_PROPOSALS.COUNTRY_CODE
AND E2.PANEL = T_PROPOSALS.PROP_PANEL
AND E3.COUNTRY <> T_PROPOSALS.COUNTRY_CODE
AND E3.PANEL = T_PROPOSALS.PROP_PANEL
ORDER BY Rnd(len(E1.LAST_NAME)), Rnd(len
(E2.LAST_NAME)), Rnd(len(E3.LAST_NAME)))
INTO tbltemp
FROM T_PROPOSALS
ORDER BY T_PROPOSALS.PROP_NUM;

Merci pour votre aide.

-----Message d'origine-----
Pour sélectionner tes 3 esperts, pourquoi ne pas faire


quelque chose comme :

SELECT TOP 1 E1.LAST_NAME, E2.LAST_NAME, E3.LAST_NAME
FROM T_EXPERTS E1
INNER JOIN T_EXPERTS E2
ON E1.LAST_NAME <> E2.LAST_NAME
INNER JOIN T_EXPERTS E3
ON E1.LAST_NAME <> E3.LAST_NAME
AND E2.LAST_NAME <> E3.LAST_NAME
WHERE E1.COUNTRY <> T_PROPOSALS.COUNTRY_CODE
AND E1.PANEL = T_PROPOSALS.PROP_PANEL
AND E2.COUNTRY <> T_PROPOSALS.COUNTRY_CODE
AND E2.PANEL = T_PROPOSALS.PROP_PANEL
AND E3.COUNTRY <> T_PROPOSALS.COUNTRY_CODE
AND E3.PANEL = T_PROPOSALS.PROP_PANEL

A +

Ado a écrit:
le voilà :
SELECT T_PROPOSALS.PROP_NUM, T_PROPOSALS.PROP_PANEL,
T_PROPOSALS.COUNTRY_CODE,
( SELECT TOP 1 E1.LAST_NAME FROM T_EXPERTS




E1
WHERE E1.COUNTRY <>




T_PROPOSALS.COUNTRY_CODE
AND E1.PANEL = T_PROPOSALS.PROP_PANEL
GROUP BY E1.LAST_NAME
HAVING COUNT (*) < 3
ORDER BY Rnd(Len(E1.LAST_NAME))) AS




EXPERT1,
( SELECT TOP 1 E2.LAST_NAME FROM T_EXPERTS




E2
WHERE E2.COUNTRY <>




T_PROPOSALS.COUNTRY_CODE
AND E2.PANEL = T_PROPOSALS.PROP_PANEL
GROUP BY E2.LAST_NAME
HAVING COUNT (*) < 3
ORDER BY Rnd(Len(E2.LAST_NAME))) AS




EXPERT2,
( SELECT TOP 1 E3.LAST_NAME FROM T_EXPERTS




E3
WHERE E3.COUNTRY <>




T_PROPOSALS.COUNTRY_CODE
AND E3.PANEL = T_PROPOSALS.PROP_PANEL
GROUP BY E3.LAST_NAME
HAVING COUNT (*) < 3
ORDER BY Rnd(Len(E3.LAST_NAME))) AS




EXPERT3
INTO tblTemp
FROM T_PROPOSALS
ORDER BY T_PROPOSALS.PROP_NUM;

Merci d'avance.

-----Message d'origine-----
pourrais tu donner le texte de ta requête seule sans






les

& et guillements, cela

nous facilitrais la vie !

A +

Ado a écrit:

Bonjour,

J'ai une base de donnée (mdb) avec deux tables, une
contient des proposotions l'autre table des experts.

J'ai une requete sql (en vba) pour faire un random "
proposotions, experts ".

voici mon code suivant :

strSQL = "SELECT T_PROPOSALS.PROP_NUM,
T_PROPOSALS.PROP_PANEL, T_PROPOSALS.COUNTRY_CODE, " &








_
"( SELECT TOP 1 E1.LAST_NAME FROM





T_EXPERTS

E1 " & _
"WHERE E1.COUNTRY <>
T_PROPOSALS.COUNTRY_CODE " & _
"AND E1.PANEL =





T_PROPOSALS.PROP_PANEL "

& _
"GROUP BY E1.LAST_NAME " & _
"HAVING COUNT (*) < 3 " & _
"ORDER BY Rnd(Len(E1.LAST_NAME))) AS
EXPERT1, " & _
"( SELECT TOP 1 E2.LAST_NAME FROM
T_EXPERTS E2 " & _
"WHERE E2.COUNTRY <>
T_PROPOSALS.COUNTRY_CODE " & _
"AND E2.PANEL =
T_PROPOSALS.PROP_PANEL " & _
"GROUP BY E2.LAST_NAME " & _
"HAVING COUNT (*) < 3 " & _
"ORDER BY Rnd(Len(E2.LAST_NAME)))





AS

EXPERT2, " & _
"( SELECT TOP 1 E3.LAST_NAME





FROM

T_EXPERTS E3 " & _
"WHERE E3.COUNTRY <>
T_PROPOSALS.COUNTRY_CODE " & _
"AND E3.PANEL =
T_PROPOSALS.PROP_PANEL " & _
"GROUP BY E3.LAST_NAME " & _
"HAVING COUNT (*) < 3 " & _
"ORDER BY Rnd(Len





(E3.LAST_NAME)))

AS EXPERT3 " & _
"INTO tblTemp " & _
"FROM T_PROPOSALS " & _
"ORDER BY T_PROPOSALS.PROP_NUM;"

Ma question est :

Comment faire pour que : l'expert1 <> l'expert2 <>
l'expert3 et de définir le nombre maximale d'expert





dans

la table entière.

Merci d'avance de votre aide.
N.B.: j'ai déjà essayé sous la rubrique "ACCESS" mais
melheureusement je n'ai toujours pas de nouvel.



--
Frédéric BROUARD, MVP SQL Server. Expert SQL /



spécialiste Delphi, web

Livre SQL - col. Référence :



http://sqlpro.developpez.com/bookSQL.html

Le site du SQL, pour débutants et pros :



http://sqlpro.developpez.com

************************ www.datasapiens.com



*************************

.









--
Frédéric BROUARD, MVP SQL Server. Expert SQL /


spécialiste Delphi, web
Livre SQL - col. Référence :


http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros :


http://sqlpro.developpez.com
************************ www.datasapiens.com


*************************

.



Avatar
Fred BROUARD
effectivement tu ne peut pas mettre une sous requête renvoyant plsuieurs
colonnes dans la clause SELECT de l'ordre SELECT. Il fautr faire une imbrication
inverse en mettant "SELECT T_PROPOSALS.PROP_NUM, T_PROPOSALS.PROP_PANEL,
T_PROPOSALS.COUNTRY_CODE, ..."
dans cette requête.

Pour te répondre plus en avant, poste la définition de tes tables, ainsi qu'un
jeu d'essais, sous formes d'ordres SQL afin que l'on reproduise ton problème...

A +


Ado a écrit:
Bonjour,

Merci pour votre réponse, j'ai essayé mais cela ne
fonctionne pas, je reçois un message « syntax error. In
query expression (SELECT TOP 1 E1.LAST_NAME .) ».

Voici mon code a nouveau :

"SELECT T_PROPOSALS.PROP_NUM, T_PROPOSALS.PROP_PANEL,
T_PROPOSALS.COUNTRY_CODE,
( SELECT TOP 1 E1.LAST_NAME, E2.LAST_NAME
FROM, E3.LAST_NAME FROM T_EXPERTS E1
INNER JOIN T_EXPERTS E2
ON E1.LAST_NAME <> E2.LAST_NAME
INNER JOIN T_EXPERTS E3
ON E3.LAST_NAME <> E2.LAST_NAME
AND E2.LAST_NAME <> E1.LAST_NAME
WHERE E1.COUNTRY <> T_PROPOSALS.COUNTRY_CODE
AND E1.PANEL = T_PROPOSALS.PROP_PANEL
AND E2.COUNTRY <> T_PROPOSALS.COUNTRY_CODE
AND E2.PANEL = T_PROPOSALS.PROP_PANEL
AND E3.COUNTRY <> T_PROPOSALS.COUNTRY_CODE
AND E3.PANEL = T_PROPOSALS.PROP_PANEL
ORDER BY Rnd(len(E1.LAST_NAME)), Rnd(len
(E2.LAST_NAME)), Rnd(len(E3.LAST_NAME)))
INTO tbltemp
FROM T_PROPOSALS
ORDER BY T_PROPOSALS.PROP_NUM;

Merci pour votre aide.


-----Message d'origine-----
Pour sélectionner tes 3 esperts, pourquoi ne pas faire



quelque chose comme :

SELECT TOP 1 E1.LAST_NAME, E2.LAST_NAME, E3.LAST_NAME



FROM T_EXPERTS E1



INNER JOIN T_EXPERTS E2
ON E1.LAST_NAME <> E2.LAST_NAME
INNER JOIN T_EXPERTS E3
ON E1.LAST_NAME <> E3.LAST_NAME
AND E2.LAST_NAME <> E3.LAST_NAME
WHERE E1.COUNTRY <> T_PROPOSALS.COUNTRY_CODE
AND E1.PANEL = T_PROPOSALS.PROP_PANEL
AND E2.COUNTRY <> T_PROPOSALS.COUNTRY_CODE
AND E2.PANEL = T_PROPOSALS.PROP_PANEL
AND E3.COUNTRY <> T_PROPOSALS.COUNTRY_CODE
AND E3.PANEL = T_PROPOSALS.PROP_PANEL

A +

Ado a écrit:

le voilà :
SELECT T_PROPOSALS.PROP_NUM, T_PROPOSALS.PROP_PANEL,
T_PROPOSALS.COUNTRY_CODE,
( SELECT TOP 1 E1.LAST_NAME FROM T_EXPERTS





E1

WHERE E1.COUNTRY <>





T_PROPOSALS.COUNTRY_CODE

AND E1.PANEL = T_PROPOSALS.PROP_PANEL
GROUP BY E1.LAST_NAME
HAVING COUNT (*) < 3
ORDER BY Rnd(Len(E1.LAST_NAME))) AS





EXPERT1,

( SELECT TOP 1 E2.LAST_NAME FROM T_EXPERTS





E2

WHERE E2.COUNTRY <>





T_PROPOSALS.COUNTRY_CODE

AND E2.PANEL = T_PROPOSALS.PROP_PANEL
GROUP BY E2.LAST_NAME
HAVING COUNT (*) < 3
ORDER BY Rnd(Len(E2.LAST_NAME))) AS





EXPERT2,

( SELECT TOP 1 E3.LAST_NAME FROM T_EXPERTS





E3

WHERE E3.COUNTRY <>





T_PROPOSALS.COUNTRY_CODE

AND E3.PANEL = T_PROPOSALS.PROP_PANEL
GROUP BY E3.LAST_NAME
HAVING COUNT (*) < 3
ORDER BY Rnd(Len(E3.LAST_NAME))) AS





EXPERT3

INTO tblTemp
FROM T_PROPOSALS
ORDER BY T_PROPOSALS.PROP_NUM;

Merci d'avance.


-----Message d'origine-----
pourrais tu donner le texte de ta requête seule sans







les

& et guillements, cela


nous facilitrais la vie !

A +

Ado a écrit:


Bonjour,

J'ai une base de donnée (mdb) avec deux tables, une
contient des proposotions l'autre table des experts.

J'ai une requete sql (en vba) pour faire un random "
proposotions, experts ".

voici mon code suivant :

strSQL = "SELECT T_PROPOSALS.PROP_NUM,
T_PROPOSALS.PROP_PANEL, T_PROPOSALS.COUNTRY_CODE, " &









_

"( SELECT TOP 1 E1.LAST_NAME FROM





T_EXPERTS


E1 " & _
"WHERE E1.COUNTRY <>
T_PROPOSALS.COUNTRY_CODE " & _
"AND E1.PANEL =





T_PROPOSALS.PROP_PANEL "


& _
"GROUP BY E1.LAST_NAME " & _
"HAVING COUNT (*) < 3 " & _
"ORDER BY Rnd(Len(E1.LAST_NAME))) AS
EXPERT1, " & _
"( SELECT TOP 1 E2.LAST_NAME FROM
T_EXPERTS E2 " & _
"WHERE E2.COUNTRY <>
T_PROPOSALS.COUNTRY_CODE " & _
"AND E2.PANEL =
T_PROPOSALS.PROP_PANEL " & _
"GROUP BY E2.LAST_NAME " & _
"HAVING COUNT (*) < 3 " & _
"ORDER BY Rnd(Len(E2.LAST_NAME)))





AS


EXPERT2, " & _
"( SELECT TOP 1 E3.LAST_NAME





FROM


T_EXPERTS E3 " & _
"WHERE E3.COUNTRY <>
T_PROPOSALS.COUNTRY_CODE " & _
"AND E3.PANEL =
T_PROPOSALS.PROP_PANEL " & _
"GROUP BY E3.LAST_NAME " & _
"HAVING COUNT (*) < 3 " & _
"ORDER BY Rnd(Len





(E3.LAST_NAME)))


AS EXPERT3 " & _
"INTO tblTemp " & _
"FROM T_PROPOSALS " & _
"ORDER BY T_PROPOSALS.PROP_NUM;"

Ma question est :

Comment faire pour que : l'expert1 <> l'expert2 <>
l'expert3 et de définir le nombre maximale d'expert





dans


la table entière.

Merci d'avance de votre aide.
N.B.: j'ai déjà essayé sous la rubrique "ACCESS" mais
melheureusement je n'ai toujours pas de nouvel.



--
Frédéric BROUARD, MVP SQL Server. Expert SQL /



spécialiste Delphi, web


Livre SQL - col. Référence :



http://sqlpro.developpez.com/bookSQL.html


Le site du SQL, pour débutants et pros :



http://sqlpro.developpez.com


************************ www.datasapiens.com



*************************


.





--
Frédéric BROUARD, MVP SQL Server. Expert SQL /



spécialiste Delphi, web

Livre SQL - col. Référence :



http://sqlpro.developpez.com/bookSQL.html

Le site du SQL, pour débutants et pros :



http://sqlpro.developpez.com

************************ www.datasapiens.com



*************************

.









--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
Avatar
Ado
le voilà le code pour les 2 tables :

CREATE TABLE T_PROPOSALS
(PROP_NUM varchar,
PROP_PANEL varchar,
COUNTRY_CODE varchar)

Insert into T_PROPOSALS ("PROP_NUM, PROP_PANEL,
COUNTRY_CODE)
VALUES ("005757", "Energy", "UK")

Insert into T_PROPOSALS ("PROP_NUM, PROP_PANEL,
COUNTRY_CODE)
VALUES ("512519", "Energy", "NL")

Insert into T_PROPOSALS ("PROP_NUM, PROP_PANEL,
COUNTRY_CODE)
VALUES ("512574", "Food", "BE")

Insert into T_PROPOSALS ("PROP_NUM, PROP_PANEL,
COUNTRY_CODE)
VALUES ("512621", "Environment", "UK")


CREATE TABLE T_EXPERTS
(PANEL varchar,
LAST_NAME varchar,
COUNTRY varchar)


Insert into T_EXPERTS ("PANEL, LAST_NAME, COUNTRY)
VALUES ("Energy", "Blundell", "NL")

Insert into T_EXPERTS ("PANEL, LAST_NAME, COUNTRY)
VALUES ("Energy", "Chughtai", "UK")

Insert into T_EXPERTS ("PANEL, LAST_NAME, COUNTRY)
VALUES ("Energy", "Coda", "UK")

Insert into T_EXPERTS ("PANEL, LAST_NAME, COUNTRY)
VALUES ("FOOD", "Finn", "UK")

Insert into T_EXPERTS ("PANEL, LAST_NAME, COUNTRY)
VALUES ("Energy", "Kostama", "UK")

Insert into T_EXPERTS ("PANEL, LAST_NAME, COUNTRY)
VALUES ("Environment", "Reiss", "UK")

Insert into T_EXPERTS ("PANEL, LAST_NAME, COUNTRY)
VALUES ("Energy", "Stapountzis", "UK")

Alors, l'idée c'est d'avoir la possibilité de limité le
nombre d'expert par table, par exp. 3 fois maximum, et
bien sure qu'il n'apparaît pas 2 fois pour la même
proposition (la selection des experts se fait par random).
Si nous n'avons plus d'expert qui réponde a nos
conditions, le champ expert doit être vide.

D'avance merci pour votre aide.

-----Message d'origine-----
effectivement tu ne peut pas mettre une sous requête


renvoyant plsuieurs
colonnes dans la clause SELECT de l'ordre SELECT. Il


fautr faire une imbrication
inverse en mettant "SELECT T_PROPOSALS.PROP_NUM,


T_PROPOSALS.PROP_PANEL,
T_PROPOSALS.COUNTRY_CODE, ..."
dans cette requête.

Pour te répondre plus en avant, poste la définition de


tes tables, ainsi qu'un
jeu d'essais, sous formes d'ordres SQL afin que l'on


reproduise ton problème...

A +


Ado a écrit:
Bonjour,

Merci pour votre réponse, j'ai essayé mais cela ne
fonctionne pas, je reçois un message « syntax error.




In
query expression (SELECT TOP 1 E1.LAST_NAME .) ».

Voici mon code a nouveau :

"SELECT T_PROPOSALS.PROP_NUM, T_PROPOSALS.PROP_PANEL,
T_PROPOSALS.COUNTRY_CODE,
( SELECT TOP 1 E1.LAST_NAME, E2.LAST_NAME
FROM, E3.LAST_NAME FROM T_EXPERTS E1
INNER JOIN T_EXPERTS E2
ON E1.LAST_NAME <> E2.LAST_NAME
INNER JOIN T_EXPERTS E3
ON E3.LAST_NAME <> E2.LAST_NAME
AND E2.LAST_NAME <> E1.LAST_NAME
WHERE E1.COUNTRY <>




T_PROPOSALS.COUNTRY_CODE
AND E1.PANEL = T_PROPOSALS.PROP_PANEL
AND E2.COUNTRY <>




T_PROPOSALS.COUNTRY_CODE
AND E2.PANEL = T_PROPOSALS.PROP_PANEL
AND E3.COUNTRY <>




T_PROPOSALS.COUNTRY_CODE
AND E3.PANEL = T_PROPOSALS.PROP_PANEL
ORDER BY Rnd(len(E1.LAST_NAME)), Rnd(len
(E2.LAST_NAME)), Rnd(len(E3.LAST_NAME)))
INTO tbltemp
FROM T_PROPOSALS
ORDER BY T_PROPOSALS.PROP_NUM;

Merci pour votre aide.


-----Message d'origine-----
Pour sélectionner tes 3 esperts, pourquoi ne pas faire



quelque chose comme :

SELECT TOP 1 E1.LAST_NAME, E2.LAST_NAME, E3.LAST_NAME



FROM T_EXPERTS E1



INNER JOIN T_EXPERTS E2
ON E1.LAST_NAME <> E2.LAST_NAME
INNER JOIN T_EXPERTS E3
ON E1.LAST_NAME <> E3.LAST_NAME
AND E2.LAST_NAME <> E3.LAST_NAME
WHERE E1.COUNTRY <> T_PROPOSALS.COUNTRY_CODE
AND E1.PANEL = T_PROPOSALS.PROP_PANEL
AND E2.COUNTRY <> T_PROPOSALS.COUNTRY_CODE
AND E2.PANEL = T_PROPOSALS.PROP_PANEL
AND E3.COUNTRY <> T_PROPOSALS.COUNTRY_CODE
AND E3.PANEL = T_PROPOSALS.PROP_PANEL

A +

Ado a écrit:

le voilà :
SELECT T_PROPOSALS.PROP_NUM, T_PROPOSALS.PROP_PANEL,
T_PROPOSALS.COUNTRY_CODE,
( SELECT TOP 1 E1.LAST_NAME FROM








T_EXPERTS

E1

WHERE E1.COUNTRY <>





T_PROPOSALS.COUNTRY_CODE

AND E1.PANEL = T_PROPOSALS.PROP_PANEL
GROUP BY E1.LAST_NAME
HAVING COUNT (*) < 3
ORDER BY Rnd(Len(E1.LAST_NAME))) AS





EXPERT1,

( SELECT TOP 1 E2.LAST_NAME FROM








T_EXPERTS

E2

WHERE E2.COUNTRY <>





T_PROPOSALS.COUNTRY_CODE

AND E2.PANEL = T_PROPOSALS.PROP_PANEL
GROUP BY E2.LAST_NAME
HAVING COUNT (*) < 3
ORDER BY Rnd(Len(E2.LAST_NAME))) AS





EXPERT2,

( SELECT TOP 1 E3.LAST_NAME FROM








T_EXPERTS

E3

WHERE E3.COUNTRY <>





T_PROPOSALS.COUNTRY_CODE

AND E3.PANEL = T_PROPOSALS.PROP_PANEL
GROUP BY E3.LAST_NAME
HAVING COUNT (*) < 3
ORDER BY Rnd(Len(E3.LAST_NAME))) AS





EXPERT3

INTO tblTemp
FROM T_PROPOSALS
ORDER BY T_PROPOSALS.PROP_NUM;

Merci d'avance.


-----Message d'origine-----
pourrais tu donner le texte de ta requête seule sans







les

& et guillements, cela


nous facilitrais la vie !

A +

Ado a écrit:


Bonjour,

J'ai une base de donnée (mdb) avec deux tables, une
contient des proposotions l'autre table des experts.

J'ai une requete sql (en vba) pour faire un












random "
proposotions, experts ".

voici mon code suivant :

strSQL = "SELECT T_PROPOSALS.PROP_NUM,
T_PROPOSALS.PROP_PANEL, T_PROPOSALS.COUNTRY_CODE, "












&

_

"( SELECT TOP 1 E1.LAST_NAME FROM





T_EXPERTS


E1 " & _
"WHERE E1.COUNTRY <>
T_PROPOSALS.COUNTRY_CODE " & _
"AND E1.PANEL =





T_PROPOSALS.PROP_PANEL "


& _
"GROUP BY E1.LAST_NAME " & _
"HAVING COUNT (*) < 3 " & _
"ORDER BY Rnd(Len(E1.LAST_NAME))) AS
EXPERT1, " & _
"( SELECT TOP 1 E2.LAST_NAME












FROM
T_EXPERTS E2 " & _
"WHERE E2.COUNTRY <>
T_PROPOSALS.COUNTRY_CODE " & _
"AND E2.PANEL =
T_PROPOSALS.PROP_PANEL " & _
"GROUP BY E2.LAST_NAME " & _
"HAVING COUNT (*) < 3 " & _
"ORDER BY Rnd(Len












(E2.LAST_NAME)))

AS


EXPERT2, " & _
"( SELECT TOP 1 E3.LAST_NAME





FROM


T_EXPERTS E3 " & _
"WHERE E3.COUNTRY <>
T_PROPOSALS.COUNTRY_CODE " & _
"AND E3.PANEL =
T_PROPOSALS.PROP_PANEL " & _
"GROUP BY E3.LAST_NAME " & _
"HAVING COUNT (*) < 3 " & _
"ORDER BY Rnd(Len





(E3.LAST_NAME)))


AS EXPERT3 " & _
"INTO tblTemp " & _
"FROM T_PROPOSALS " & _
"ORDER BY T_PROPOSALS.PROP_NUM;"

Ma question est :

Comment faire pour que : l'expert1 <> l'expert2 <>
l'expert3 et de définir le nombre maximale d'expert





dans


la table entière.

Merci d'avance de votre aide.
N.B.: j'ai déjà essayé sous la rubrique "ACCESS"












mais
melheureusement je n'ai toujours pas de nouvel.



--
Frédéric BROUARD, MVP SQL Server. Expert SQL /



spécialiste Delphi, web


Livre SQL - col. Référence :



http://sqlpro.developpez.com/bookSQL.html


Le site du SQL, pour débutants et pros :



http://sqlpro.developpez.com


************************ www.datasapiens.com



*************************


.





--
Frédéric BROUARD, MVP SQL Server. Expert SQL /



spécialiste Delphi, web

Livre SQL - col. Référence :



http://sqlpro.developpez.com/bookSQL.html

Le site du SQL, pour débutants et pros :



http://sqlpro.developpez.com

************************ www.datasapiens.com



*************************

.









--
Frédéric BROUARD, MVP SQL Server. Expert SQL /


spécialiste Delphi, web
Livre SQL - col. Référence :


http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros :


http://sqlpro.developpez.com
************************ www.datasapiens.com


*************************

.