• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

zephirus

Dúvida em comando SQL

9 mensagens neste tópico

Olá,

Tenho duas tabelas de SQL, ambas com dados quase idênticos, tendo em comum o 'id' e o 'label'

Table1:                    Table2:
id   label   type          id   label   type
1    aaa     xpto           1   aaa     xpto
2    bbb     xpto
3    ccc     flop

No meu programa tenho duas listviews, listview1 e listview 2.

Eu quero preencher a listview1 com os dados da Table2 e depois preencher a listview2 com os dados da Table1 MAS sem colocar os que já estão na listview1, ou seja, quero ficar com isto:

listview1:        listview2:
id   label        id   label
2    bbb          1    aaa
3    ccc

Qual o comando SQL que devo usar?

Este comando que uso para preencher a listview1 funciona mas eu estou a 'forçar' o item que quero evitar (o 'aaa'):

SQLcommand.CommandText = "SELECT id, label FROM Table1 WHERE Type = 'xpto' AND PartNumber <> 'aaa'"

Eu quero é uma coisa genérica, do género que seja percorrida toda a tabela para ver se o item já existe. Estou com a cabeça feita num oito de tanto tentar e não conseguir fazer isto. Alguém sabe como?

Obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

do género que seja percorrida toda a tabela para ver se o item já existe

Eis a tua resposta.

Eu puxava a tabela toda para a aplicação e depois, através de um ciclo, ia passar a listview toda à caça do item para adicionar a linha actual da tabela puxada caso não fosse encontrado.

For Each LVI As ListViewItem In ListView1.Items
'lógica de comparação
Next

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eis a tua resposta.

Eu puxava a tabela toda para a aplicação e depois, através de um ciclo, ia passar a listview toda à caça do item para adicionar a linha actual da tabela puxada caso não fosse encontrado.

For Each LVI As ListViewItem In ListView1.Items
'lógica de comparação
Next

Pois, só se for assim. Penso que deve haver algum comando SQL que faça isso mas enquanto não sei, vou fazer como sugeres.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

AH, espera. há duas tabelas. Não tinha percebido. Fiquei com a impressão de ser só uma.

Sim, penso que seja possível. Não tenho nada onde possa testar neste momento e como não uso isso com muita frequência também não te posso adiantar nada.

Há-de passar por aqui alguém que saiba isso de cor concerteza :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

conheces o select minus???... existe para oracle...nao sei se para SQL server ou outros existe,... mas é disso que precisas

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

conheces o select minus???... existe para oracle...nao sei se para SQL server ou outros existe,... mas é disso que precisas

Eu acho que o meu problema não pode ser resolvido por comandos SQL. Isto porque o que eu quero mesmo é não repetir items nas duas listboxs. Implementei como o ribeiro55 disse e está a funcionar bem.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu acho que o meu problema não pode ser resolvido por comandos SQL. Isto porque o que eu quero mesmo é não repetir items nas duas listboxs. Implementei como o ribeiro55 disse e está a funcionar bem.

Desculpa mas estás errado.. isso em oracle faz-se como te disse.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Desculpa mas estás errado.. isso em oracle faz-se como te disse.

Sim, mas não é o que eu quero. Eu preciso mesmo de jogar com as listboxs e não com as tabelas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá,

Tenho duas tabelas de SQL, ambas com dados quase idênticos, tendo em comum o 'id' e o 'label'

Table1:                    Table2:
id   label   type          id   label   type
1    aaa     xpto           1   aaa     xpto
2    bbb     xpto
3    ccc     flop

No meu programa tenho duas listviews, listview1 e listview 2.

Eu quero preencher a listview1 com os dados da Table2 e depois preencher a listview2 com os dados da Table1 MAS sem colocar os que já estão na listview1, ou seja, quero ficar com isto:

listview1:        listview2:
id   label        id   label
2    bbb          1    aaa
3    ccc

Qual o comando SQL que devo usar?

Este comando que uso para preencher a listview1 funciona mas eu estou a 'forçar' o item que quero evitar (o 'aaa'):

SQLcommand.CommandText = "SELECT id, label FROM Table1 WHERE Type = 'xpto' AND PartNumber <> 'aaa'"

Eu quero é uma coisa genérica, do género que seja percorrida toda a tabela para ver se o item já existe. Estou com a cabeça feita num oito de tanto tentar e não conseguir fazer isto. Alguém sabe como?

Obrigado.

usas o comando distinct (para devolver so os valores diferentes) e o join para unires as duas tabelas

Tens aqui exemplos

http://www.1keydata.com/sql/sqldistinct.html

http://www.1keydata.com/sql/sqljoins.html

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora