Como fazer a ESCOLHA neste caso? [duplicado]

0

Pergunta

Como criar um único MSSQL consulta SELECT neste caso:

  1. Temos 2 mesas de frutas e de expiração
  2. O objetivo é receber tabela, sempre que o número de frutos tem informações sobre a necessidade de NULL em expirationDate coluna. Os frutos números que não têm NULO teria zeros na coluna. Número 4 não existe na tabela de vencimento, de modo que ele também teria 0 em resultados, porque ele não tem valor NULO.

Tabelas

sql-server
2021-11-23 09:44:47
3
0

Você não pode facilmente obter a data de validade no formato que você desejar. No entanto, ele realmente não importa(?). Eu suponho que você quer 1 ou 0 na nova tabela porque você quiser usar uma instrução if para verificar se o fruto é ruim ou não. Você pode resolver isso facilmente:

if(expirationDate == null){/*something*/} 

ou, você pode até mesmo ser capaz de fazer

if(expirationDate) //this is all fruit that is not bad
else{/*your code to deal with expirated fruit here*/}

Nota: eu não sei o que linguagens de programação que você está usando. Mas, na maioria deles: null e 0 são FALSAS.

if(null) // false
if(0) //false
if(undefined) //false, in javascript
//everything that is not a false value, is true.
if("oiaehgtaoiwgneawg") //true
if(-1) //true

Para responder a sua consulta SQL pergunta:

Você já tem tudo o que precisa na expiração tabela

SELECT fruit_number, expiration_date
FROM expiration;

Espero que isso ajude

2021-11-23 10:13:04

Obrigado pela sua resposta, mas isso não vai funcionar. Primeiro de tudo, você vai receber várias mesma fruta números e.g 1 tem dois registros. E, em segundo lugar, se o número de frutos NULA, que não deve mostrar os outros data de validade.
Grzegorz Kaczmarczyk

ah tudo bem... eu não entendi isso de você pergunta. O meu horário de almoço é de agora, mas vou dar uma olhada depois do trabalho, se ninguém tiver resolvido o problema ainda :)
CodeAddict
0

Você tem que usá-lo com Case Condição. Mas ter que alterar a instrução de um pouco:

select fruit_number, --distinct(fruit_number),
x =case expiration_date
when NULL then null
else 0
end
2021-11-23 10:07:49
0

Meu amigo encontrou a solução.

SELECT
    fruit_number, 
    MAX(expirationDate) as expirationDate
FROM
    (SELECT
        f.fruit_number,
        CASE
            WHEN e.expiration_date is NULL AND e.fruit_number IS NOT NULL THEN 1
            ELSE 0
            END AS expirationDate
    FROM
        expiration as e
        FULL OUTER JOIN fruits as f ON f.fruit_number = e.fruit_number
    WHERE
        f.fruit_number IS NOT NULL
    ) t
GROUP BY
    fruit_number
ORDER BY
    fruit_number
2021-11-23 10:23:25

Bem-vindo ao Sobrecarga de Pilha. Código sem qualquer explicação raramente são úteis. Estouro de pilha é sobre a aprendizagem, fornecendo fragmentos cegamente copiar e colar. Por favor, edite a sua pergunta e explicar como ele responde à pergunta específica que está sendo solicitado. Veja Como Resposta.
Sfili_81

Em outros idiomas

Esta página está em outros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................