SQLite

SQL Server

MySQL

SQLite

09/11/2018

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

Curtidas 0

Melhor post

Emerson Nascimento

Emerson Nascimento

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"

GOSTEI 2

Mais Respostas

Alex William

Alex William

09/11/2018

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%";
GOSTEI 1
Tassio

Tassio

09/11/2018

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
GOSTEI 0
Tassio

Tassio

09/11/2018

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?
GOSTEI 0
Tassio

Tassio

09/11/2018

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()
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

09/11/2018

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()

GOSTEI 1
Tassio

Tassio

09/11/2018

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

Emerson Nascimento

09/11/2018

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] )

GOSTEI 1
Tassio

Tassio

09/11/2018

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

Regina

09/11/2018

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?
GOSTEI 0
POSTAR