Ir para o conteúdo
zephirus

Dúvida em comando SQL

Mensagens Recomendadas

zephirus    0
zephirus

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
ribeiro55    44
ribeiro55

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
zephirus    0
zephirus

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
ribeiro55    44
ribeiro55

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
José Lopes    1
José Lopes

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
zephirus    0
zephirus

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
José Lopes    1
José Lopes

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
zephirus    0
zephirus

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
eduardo carvalho    0
eduardo carvalho

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

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade