2012-10-08 10 views
0

J'utilise MySQL avec le langage Visual Studio 2010 C#.Instruction IF avec plusieurs SELECT dans MySQL

Je dois faire une requête.

SELECT a field, if this field is null or equals to 0 

Faire une autre SELECT et si elle est différente de <>null ou 0. Effectuez une autre SELECT.

J'ai également essayé de suivre la suggestion qui apparaît lorsque vous écrivez le titre ci-dessus, mais rien.

quelque chose comme:

SELECT cart.cod_dependent (if cart.cod_dependent <> 0, Select ass.matricula, ass.nome, ass.situacao_social, ass.categoria, ELSE IF cart.cod_dependent = null Make another select) 

Chaque sélectionnez sera dans les différents tableaux, mais dans la même base de données.

------ -------- Mise à jour 10/08/2012 09h59 Maintenant, j'essaie ce que vous avez dit Radu Bompa, mais il dit « encoutering erreur fatale pendant la Commande d'exécution "= \.

MySqlCommand cmd = new MySqlCommand(); 
    string sql = @"SELECT @cod_dep = cart.cod_dependente FROM carteiras as cart 
    IF @cod_dep IS NULL 
    BEGIN 
    SELECT ass.matricula, ass.nome, ass.situacao_social, ass.categoria FROM associados AS ass INNER JOIN categorias AS cat ON cat.codigo = ass.categoria, 
    INNER JOIN situacoes_social AS ss ON ass.situacao_social = ss.codigo 
    END 
    ELSE 
    BEGIN 
    SELECT dep.nome, dep.matricula, dep.situacao_social, ss.descricao FROM dependentes INNER JOIN situacao_social as ss dep.situacao_social = ss.codigo 
    END 
    WHERE cart.numero = @carteira"; 
    cmd.CommandText = sql; 
    cmd.CommandType = CommandType.Text; 
    string dependente = ""; 
    cmd.Parameters.Add(new MySqlParameter("@carteira", MySqlDbType.Int32)).Value = carteira; 
    DataSet ds = _dal.Consultar(cmd); 

Répondre

0

Peut-être quelque chose comme ça pourrait fonctionner:

SELECT @SomeValue = cart.cod_dependent FROM cart 
[email protected] is a variable, declared for this purpose 
IF @SomeValue IS NULL 
BEGIN 
    SELECT ass.matricula, ass.nome, ass.situacao_social, ass.categoria FROM table2 
END 
ELSE 
BEGIN 
    SELECT field FROM table3 
END 

Vous pouvez également essayer d'utiliser un stored procedure.

+0

Merci de m'avoir répondu Radu Bompa, mais dites-moi, ce @SomeValue est juste une «chose» que vous utilisez pour comparer, comme les requêtes que nous utilisons pour exécuter avec MySqlcommand.Parameter.Add (nouveau MySq [...]) ; ? Ou je dois le comparer avec une certaine valeur? Je vais essayer sans une certaine valeur, merci encore. –

+0

Dans l'instruction SELECT, vous n'avez pas à comparer SomeValue, la comparaison est faite dans l'instruction IF, en utilisant IS NULL. –

+0

S'il vous plaît si ce n'est pas trop, jetez un oeil à mon poste de mise à jour et voir ce qui ne va pas ... Merci –