Jump to content

Ajuda com SQL não estou conseguindo!!!!


TekCell Tecnologia

Postagens Recomendadas

Estou começando a Estudar Delphi e preciso de uma ajuda para criar um Instrução
SQL que não estou conseguindo.

Tenho Seguinte tabela de passas de competidores que correm de cavalo em duplas sorteadas sem repetição
nas baterias que ja criei e ja ta tudo ok

Tabela de passadas

ID Nº BATERIA Competidor 1 Competidor 2
1 1 BATERIA /FARNEY / PEDRO
2 1 BATERIA MARIA KENIA
3 1 BATERIA APARICIO HU
4 1 BATERIA GAVINHA RODRIGAO
5 2 BATERIA GAVINHA APARICIO
6 2 BATERIA HU MARIA
7 2 BATERIA PEDRO KENIA
8 2 BATERIA FARNEY RODRIGAO
9 3 BATERIA FARNEY GAVINHA
10 3 BATERIA APARICIO PEDRO
11 3 BATERIA MARIA RODRIGAO
12 3 BATERIA KENIA HU
13 4 BATERIA MARIA APARICIO
14 4 BATERIA HU GAVINHA
15 4 BATERIA KENIA FARNEY
16 4 BATERIA RODRIGAO PEDRO
17 5 BATERIA PEDRO HU
18 5 BATERIA FARNEY APARICIO
19 5 BATERIA RODRIGAO KENIA
20 5 BATERIA MARIA GAVINHA
21 6 BATERIA GAVINHA RODRIGAO
22 6 BATERIA APARICIO KENIA
23 6 BATERIA MARIA PEDRO
24 6 BATERIA HU FARNEY

Preciso criar uma SQL que liste os competidores por ordem alfabética com quem ele vai correr.
Aparicio X Todos que ele vai correr
kENIA X Todos que ela vai correr
.... e assim por diante.

Pela logica vai ter repetição pois Se aparicio corre com kenia, kenia tambem vai correr aparicio.

Ja consegui com essa instrução:

dm.queryConPas.SQL.Add('SELECT * FROM passadas WHERE ID_Evento = ' + IntToStr(IdEvento) + ' Order BY Comp1, Comp2 ASC');

Essa listagem:
Nº bATERIA Competidor 1 Competidor 2
1 BATERIA APARICIO HU
6 BATERIA APARICIO KENIA
3 BATERIA APARICIO PEDRO
5 BATERIA FARNEY APARICIO
3 BATERIA FARNEY GAVINHA
1 BATERIA FARNEY PEDRO
2 BATERIA FARNEY RODRIGAO
2 BATERIA GAVINHA APARICIO
6 BATERIA GAVINHA RODRIGAO
1 BATERIA GAVINHA RODRIGAO
6 BATERIA HU FARNEY
4 BATERIA HU GAVINHA
2 BATERIA HU MARIA
4 BATERIA KENIA FARNEY
..... ...... .... e assim por diante..
preciso de algo assim

dm.queryConPas.SQL.Add('SELECT * FROM passadas WHERE ID_Evento = ' + IntToStr(IdEvento) + ' AND Comp1 = :C1 OR Comp2 = :C2');
dm.queryConPas.ParamByName('C1').Value := lblNome.Caption;
dm.queryConPas.ParamByName('C2').Value := lblNome.Caption;

Ai consigo a ordem mas so de um competidor, precisava de uma lista em ordem alfabética com todos os competidores e seu parceiros, lembrando que no caso a competidora kenia pode estar no campo competidor 1 ou competidor 2 ok.

Nº bATERIA Competidor 1 Competidor 2
1 BATERIA MARIA KENIA
2 BATERIA PEDRO KENIA
3 BATERIA KENIA HU
4 BATERIA KENIA FARNEY
5 BATERIA RODRIGAO KENIA
6 BATERIA APARICIO KENIA

Por favor alquem pode me dar uma ajuda...

Link to comment
Compartilhe em outros sites

Olá. Primeiramente há um erro em sua instrução sql. Você está utilizando "AND" e "OR", então você precisa colocar "()".

dm.queryConPas.SQL.Add('SELECT * FROM passadas WHERE ID_Evento = ' + IntToStr(IdEvento) + ' AND (Comp1 = :C1 OR Comp2 = :C2)');

Para sua listagem você pode utilizar o UNION
 

SELECT BATERIA AS BATERIA,
       COMPETIDOR1 AS COMPETIDOR1,
       COMPETIDOR2 AS COMPETIDOR2
  FROM FROM PASSADAS
 WHERE ID_EVENTO = :IDEVENTO
UNION
SELECT BATERIA AS BATERIA,
       COMPETIDOR2 AS COMPETIDOR1,
       COMPETIDOR1 AS COMPETIDOR2
  FROM FROM PASSADAS
 WHERE ID_EVENTO = :IDEVENTO
 ORDER BY 2,3

 

  • Curtir 1
Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...