OVH Cloud OVH Cloud

URGENT : Pour Champion en requête SQL

4 réponses
Avatar
FD
J'ai une table 'TB1' avec les 2 enregistrements suivants :=20

ID Position Description
-- -------- -----------
1 10 Auto
2 15 Bateau

Bas=E9 sur cette table, quelle est la requ=EAte qui me=20
permettrais d'avoir ce r=E9sultat :=20

Position Description
----- -----------
10 Auto
11 Bateau
12 Bateau
13 Bateau
14 Bateau
15 Bateau

Bas=E9 sur le premier enregistrement de 'TB1',=20
le champ 'Position' est incr=E9ment=E9 jusqu'=E0 la valeur du=20
champ 'Position' du second enregistrement de 'TB1' et ce,=20
en concervant la m=EAme valeur du champ 'Description' du=20
second enregistrement de 'TB1'.

Merci beaucoup =E0 l'avance !

4 réponses

Avatar
Jacques Vuillermet
Le mot "champion" stimule...

Une question importante : la table TB1 pourra-t-elle avoir plus de 2
enregistrements ?

Suivant la réponse, l'algorythme pourrait fortement varié.

Jacques.

"FD" a écrit dans le message de
news:1b1b01c3838e$3c6df660$
J'ai une table 'TB1' avec les 2 enregistrements suivants :

ID Position Description
-- -------- -----------
1 10 Auto
2 15 Bateau

Basé sur cette table, quelle est la requête qui me
permettrais d'avoir ce résultat :

Position Description
----- -----------
10 Auto
11 Bateau
12 Bateau
13 Bateau
14 Bateau
15 Bateau

Basé sur le premier enregistrement de 'TB1',
le champ 'Position' est incrémenté jusqu'à la valeur du
champ 'Position' du second enregistrement de 'TB1' et ce,
en concervant la même valeur du champ 'Description' du
second enregistrement de 'TB1'.

Merci beaucoup à l'avance !
Avatar
FD
Merci pour la rapidité de réponse et tant mieux pour le
stimuli.

... disons oui, seulement 2 enregistrements dans la table
TB1 !

... j'ai hâte de voir !


-----Message d'origine-----
Le mot "champion" stimule...

Une question importante : la table TB1 pourra-t-elle


avoir plus de 2
enregistrements ?

Suivant la réponse, l'algorythme pourrait fortement varié.

Jacques.

"FD" a écrit dans le


message de
news:1b1b01c3838e$3c6df660$
J'ai une table 'TB1' avec les 2 enregistrements suivants :

ID Position Description
-- -------- -----------
1 10 Auto
2 15 Bateau

Basé sur cette table, quelle est la requête qui me
permettrais d'avoir ce résultat :

Position Description
----- -----------
10 Auto
11 Bateau
12 Bateau
13 Bateau
14 Bateau
15 Bateau

Basé sur le premier enregistrement de 'TB1',
le champ 'Position' est incrémenté jusqu'à la valeur du
champ 'Position' du second enregistrement de 'TB1' et ce,
en concervant la même valeur du champ 'Description' du
second enregistrement de 'TB1'.

Merci beaucoup à l'avance !


.



Avatar
bruno reiter [MVP]
tu ne pourras pas le faire en une requête, il faudra par ex ajouter une table et
faire qqchose comme ça :


use northwind
go

create table bb1
(
a1 int,
b1 char(10)
)
go

insert bb1 values(2,'A')
insert bb1 values(6,'B')
insert bb1 values(12,'C')

go

create table bb2
(
a2 int
)
go

insert bb2 values(1)
insert bb2 values(2)
insert bb2 values(3)
insert bb2 values(4)
insert bb2 values(5)
insert bb2 values(6)
insert bb2 values(7)
insert bb2 values(8)
insert bb2 values(9)
insert bb2 values(10)
insert bb2 values(11)
insert bb2 values(12)
insert bb2 values(13)
insert bb2 values(14)
insert bb2 values(15)

go


select a2, (select top 1 b1 from bb1 where a1 >= a2) as lib
from bb2
left join bb1 on a2 = a1
where a2 < (select max(a1) from bb1) + 1
and a2 > (select min(a1) from bb1) - 1

go

drop table bb1
drop table bb2








br

"FD" wrote in message
news:1b1b01c3838e$3c6df660$
J'ai une table 'TB1' avec les 2 enregistrements suivants :

ID Position Description
-- -------- -----------
1 10 Auto
2 15 Bateau

Basé sur cette table, quelle est la requête qui me
permettrais d'avoir ce résultat :

Position Description
----- -----------
10 Auto
11 Bateau
12 Bateau
13 Bateau
14 Bateau
15 Bateau

Basé sur le premier enregistrement de 'TB1',
le champ 'Position' est incrémenté jusqu'à la valeur du
champ 'Position' du second enregistrement de 'TB1' et ce,
en concervant la même valeur du champ 'Description' du
second enregistrement de 'TB1'.

Merci beaucoup à l'avance !
Avatar
Fred BROUARD
La réponse généraliste consiste à ajouter une table des nombres comme ceci :

CREATE TABLE ENTIER
(CHIFFRE INTEGER NOT NULL)

INSERT INTO ENTIER (CHIFFRE) VALUES (0)
INSERT INTO ENTIER (CHIFFRE) VALUES (1)
INSERT INTO ENTIER (CHIFFRE) VALUES (2)
INSERT INTO ENTIER (CHIFFRE) VALUES (3)
INSERT INTO ENTIER (CHIFFRE) VALUES (4)
INSERT INTO ENTIER (CHIFFRE) VALUES (5)
INSERT INTO ENTIER (CHIFFRE) VALUES (6)
INSERT INTO ENTIER (CHIFFRE) VALUES (7)
INSERT INTO ENTIER (CHIFFRE) VALUES (8)
INSERT INTO ENTIER (CHIFFRE) VALUES (9)

Pour alimentater la table ENTIER avec les nombre de 10 à 999
faire la requête :

INSERT INTO ENTIER (CHIFFRE)
SELECT (C1.CHIFFRE * 1000) + (C2.CHIFFRE * 100) +
(C3.CHIFFRE * 10) + (C4.CHIFFRE * 1)
FROM ENTIER C1
CROSS JOIN ENTIER C2
CROSS JOIN ENTIER C3
CROSS JOIN ENTIER C4

Puis pour ta solution :

CREATE TABLE T
(ID integer,
Position integer,
Description varchar(16))

INSERT INTO T VALUES (1, 10, 'Auto')
INSERT INTO T VALUES (2, 15, 'Bateau')

SELECT CHIFFRE as Position, Description
FROM T
CROSS JOIN ENTIER
WHERE CHIFFRE BETWEEN (SELECT MIN(Position) FROM T) AND (SELECT
MAX(Position) FROM T)
AND CHIFFRE <= Position

Il te reste un effet de bord à régler !!!

Amuse toi bien !!!

A +


FD a écrit:
J'ai une table 'TB1' avec les 2 enregistrements suivants :

ID Position Description
-- -------- -----------
1 10 Auto
2 15 Bateau

Basé sur cette table, quelle est la requête qui me
permettrais d'avoir ce résultat :

Position Description
----- -----------
10 Auto
11 Bateau
12 Bateau
13 Bateau
14 Bateau
15 Bateau

Basé sur le premier enregistrement de 'TB1',
le champ 'Position' est incrémenté jusqu'à la valeur du
champ 'Position' du second enregistrement de 'TB1' et ce,
en concervant la même valeur du champ 'Description' du
second enregistrement de 'TB1'.

Merci beaucoup à l'avance !




--
Frédéric BROUARD - expert SQL, spécialiste : SQL Server / 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
****************** mailto: ******************