SQLite

09/11/2018

0

Bom dia Pessoal

Estou com uma duvida, tenho um banco de dados com duas tabelas uma cliente e a outra cursos, onde o cliente pode fazer vários cursos até aqui tudo bem consigo add os cursos ao cliente, fiz um inner join entre essas duas colunas pra pode na hora da consulta do cliente saber quais cursos ele esta fazendo, mais na hora da consulta dos clientes ele me retorna todos os cursos cadastros msm no nome de outro cliente, eu gostaria de saber se tem algum filtro pra filtra isso.

Ex: pesquisar por Fulano de Tal e ele me retorna só os cursos que esse fulano de tal esta fazendo.

Agradeço a todos desde já.
Tassio

Tassio

Responder

Post mais votado

12/11/2018

Acredito que você precise fazer em 2 passos:

- primeiro exclua os cursos:
DELETE FROM tabela_cursos WHERE id_aluno = (SELECT id_aluno FROM tabela_alunos WHERE nome_aluno = "Alekym")

- depois exclua o aluno:
DELETE FROM tabela_alunos WHERE nome_aluno = "Alekym"

Emerson Nascimento

Emerson Nascimento
Responder

Mais Posts

09/11/2018

Alex William

Tente dessa forma, ele busca todos os cursos que tem aluno e que o nome do aluno na tabela seja o que tu digitou.

// Exemplo para busca exata do nome
SELECT * FROM <tabela_cursos> tc INNER JOIN <tabela_alunos> ta ON tc.id_aluno = ta.id_aluno AND ta.nome_aluno = "Alekym";

// Exemplo para busca dinamica
SELECT * FROM <tabela_cursos> tc INNER JOIN <tabela_alunos> ta ON tc.id_aluno = ta.id_aluno AND ta.nome_aluno LIKE "%Alekym%";
Responder

09/11/2018

Tassio

Tente dessa forma, ele busca todos os cursos que tem aluno e que o nome do aluno na tabela seja o que tu digitou.

// Exemplo para busca exata do nome
SELECT * FROM <tabela_cursos> tc INNER JOIN <tabela_alunos> ta ON tc.id_aluno = ta.id_aluno AND ta.nome_aluno = "Alekym";

// Exemplo para busca dinamica
SELECT * FROM <tabela_cursos> tc INNER JOIN <tabela_alunos> ta ON tc.id_aluno = ta.id_aluno AND ta.nome_aluno LIKE "%Alekym%";




Muito Obrigado deu certo!!
Deus Abençoe você amigo
Responder

09/11/2018

Tassio

Alekym

Agora surgiu mais uma duvida.
Tipo se eu quiser deletar o aluno junto com o curso usando o inner join, como eu faço?
Responder

12/11/2018

Tassio

Bom dia Emerson!
Meu código está assim, tentei usar sua dica mais ele me retorna um erro :(





def Delete():
if len(tree.selection()) == 0:
tkMessageBox.showinfo("Deletar","Selecione um Nome")
else:
result = tkMessageBox.askquestion('Deletar', 'Tem certeza disso', icon="warning")
if result == 'yes':
curItem = tree.focus()
contents =(tree.item(curItem))
selecteditem = contents['values']
tree.delete(curItem)
Database()
cursor.execute("DELETE FROM `tabela_alunos` WHERE `id_aluno` = %d" % selecteditem[0])
conn.commit()
atualizar()
cursor.close()
conn.close()
Responder

12/11/2018

Emerson Nascimento

Não sei o que está contido em selecteditem[0] e nem sei qual foi o erro apresentado.
De qualquer modo, com base no teu código, selecteditem[0] deveria conter o ID do aluno, porque é com o id que a query está trabalhando.
Mais uma coisa: apague o item da tree somente após apagar o registro do banco de dados (isso se a função atualizar() já não o fizer).
def Delete():
	if len(tree.selection()) == 0:
		tkMessageBox.showinfo("Deletar","Selecione um Nome")
	else:
		result = tkMessageBox.askquestion('Deletar', 'Tem certeza disso', icon="warning")
		if result == 'yes':
			curItem = tree.focus()
			contents =(tree.item(curItem))
			selecteditem = contents['values']
			Database()
			cursor.execute("DELETE FROM `tabela_alunos` WHERE `id_aluno` = %d" % selecteditem[0])
			conn.commit()
			tree.delete(curItem) // movi a exclusão do item da tree para depois de eliminação do registro físico
			atualizar() // se a função atualizar() refizer a tree, nem precisa da linha acima
			cursor.close()
			conn.close()

Responder

12/11/2018

Tassio

O "selecteditem[0]" contém o id do nome selecionado na tabela pra a exclusão
Responder

12/11/2018

Emerson Nascimento

Qual o erro apresentado?

A linha para o comando SQL não deveria ser:

cursor.execute("DELETE FROM tabela_alunos WHERE id_aluno = %d", (selecteditem[0]) )

ou

cursor.execute("DELETE FROM tabela_alunos WHERE id_aluno = %d", selecteditem[0] )

Responder

12/11/2018

Tassio

O "selecteditem[0]" contém o id do nome selecionado na tabela pra a exclusão
Esse é o erro "database is locked"
Responder

29/12/2018

Regina

ola! boa tarde.
criei um banco chamado database1, e criei duas tabelas, uma com nome:Empregado e outra com o nome seccao ambas com seus valores atribuidos. Como faço para mostrar os nomes de todas as sccoes que ficam em uma determinada cicdade?
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