Ir para conteúdo
Fórum Script Brasil
  • 0

Duplicar Inner Join dentro de um select


Josias

Pergunta

E aí pessoal,

Tudo bem?

Estou desenvolvendo um sisteminha para uma espécie de bingo, onde as bolas são sorteadas manualmente e sua função é avisar se tem um ganhador.

Para tal, tenho duas tabelas em meu banco de dados.

cartela

cId

cNumero

cB1

cB2

cB3

cB4

cB5

sort

id

numero

À medida em que as bolas são sorteadas, vão sendo registradas na tabela sort.

Preciso desenvolver uma função que busque na tabela cartela o cNumero da que for premiada, uma vez que cada dezena de cada cartela ficará em um capo diferente (cB1, cB2, cB3, cB4 e cB5).

Tentei duas funções diferentes: select dentro de select e inner join.

Eis os códigos:

VIA INNER JOIN

SELECT cartela.cNumero AS sort FROM cartela INNER JOIN sort ON cartela.cB1 = sort.numero
VIA SELECT DENTRO DE SELECT
SELECT * FROM cartela WHERE cB1 in(SELECT numero FROM sort)
Para os dois casos, se ficar do jeito que está ele acha resultado, mas apenas baseado no campo cB1. Preciso fazer com que ele busque nos cinco campos. Se eu acrescentar o AND, como nos exemplos abaixo, não retorna resultado nenhum.
SELECT cartela.cNumero AS sort FROM cartela INNER JOIN sort ON cartela.cB1 = sort.numero cartela.cB2 = sort.numero

SELECT * FROM cartela WHERE cB1 in(SELECT numero FROM sort) AND cB2 in(SELECT numero FROM sort)

Como resolver isso? Já tentei também outros métodos, mas estes foram os dois último.

Editado por Josias
Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Algo assim funciona?

SELECT CID, COUNT(PONTO) AS PONTOS
FROM (
  SELECT CID, (CB1 = NUMERO) OR (CB2 = NUMERO) OR (CB3 = NUMERO) OR (CB4 = NUMERO) OR (CB5 = NUMERO) AS PONTO
  FROM CARTELA, SORT
)
GROUP BY CID
HAVING PONTOS = 5;

Link para o comentário
Compartilhar em outros sites

  • 0

Testa agora (coloquei "X" como aliás da consulta intermediária):

SELECT CID, COUNT(PONTO) AS PONTOS
FROM (
  SELECT CID, (CB1 = NUMERO) OR (CB2 = NUMERO) OR (CB3 = NUMERO) OR (CB4 = NUMERO) OR (CB5 = NUMERO) AS PONTO
  FROM CARTELA, SORT
) X
GROUP BY CID
HAVING PONTOS = 5;

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...