Ajuda com SQL Consulta Query Delphi

04/04/2023

0

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...
Farney Ferreira

Farney Ferreira

Responder

Post mais votado

04/04/2023

não seria somente colocar os parêntesis?

'SELECT * FROM passadas WHERE ID_Evento = ' + IntToStr(IdEvento) + ' AND (Comp1 = :C1 OR Comp2 = :C2)'

Emerson Nascimento

Emerson Nascimento
Responder

Mais Posts

04/04/2023

Arthur Heinrich

'SELECT nr_bateria, comp1, comp2 FROM passadas WHERE ID_Evento = ' + IntToStr(IdEvento) + '
 UNION ALL
 SELECT nr_bateria, comp2, comp1 FROM passadas WHERE ID_Evento = ' + IntToStr(IdEvento) + '
 ORDER BY 1, 2, 3'

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar