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...
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
Curtir tópico
+ 0
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)'
'SELECT * FROM passadas WHERE ID_Evento = ' + IntToStr(IdEvento) + ' AND (Comp1 = :C1 OR Comp2 = :C2)'
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
Clique aqui para fazer login e interagir na Comunidade :)