Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Candidat au Club
    Requête SQL fonctionne avec SQL Server et uniquement avec TOP1 dans java!
    Bonjour,

    Je m'arrache les cheveux avec SQL. Je n'en suis pourtant pas à ma première requête mais là je vous avoue que je suis perdu!

    Voici mon code:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    select ord.OrderdataNum,
    ord.OrderdataInvoice,
    ord.OrderdataDate,
    ord.OrderdataTotalAmount,
    b.BookTitle,
    cmd.CmdLineQty,
    b.BookPrice,
    CONCAT (a.AddressStreet, ' ', a.AddressZip, ' ', a.AddressCity, ' ', a.AddressCountry)
    from OrderData ord
    left join CommandLine cmd on (cmd.OrderdataNum = ord.OrderdataNum)
    left join Book b on (b.BookIsbn = cmd.BookIsbn)
    left join Address a on (a.AddressId = ord.AddAddressid)
    where ord.CustomerId = '21'order by ord.OrderdataDate DESC;


    Si je l'exécuter dans le manager SQL, pas de problème ça fonctionne. Mais en java, rien du tout.

    Si maintenant je fait ceci:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    select top 1 ord.OrderdataNum,
    ord.OrderdataInvoice,
    ord.OrderdataDate,
    ord.OrderdataTotalAmount,
    b.BookTitle,
    cmd.CmdLineQty,
    b.BookPrice,
    CONCAT (a.AddressStreet, ' ', a.AddressZip, ' ', a.AddressCity, ' ', a.AddressCountry)
    from OrderData ord
    left join CommandLine cmd on (cmd.OrderdataNum = ord.OrderdataNum)
    left join Book b on (b.BookIsbn = cmd.BookIsbn)
    left join Address a on (a.AddressId = ord.AddAddressid)
    where ord.CustomerId = '21'order by ord.OrderdataDate DESC;


    ....et bien avec le top1, ça fonctionne!

    et le pire les amis, c'est que si avec un top1 ça fonctionne, avec un top5 ça ne fonctionne plus!

    Au secours!

  2. #2
    Modérateur

    Hum. Et tu les lis comment, les résultats ?

    En fait, quel est le code Java, précisément ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Candidat au Club
    Citation Envoyé par thelvin Voir le message
    Hum. Et tu les lis comment, les résultats ?

    En fait, quel est le code Java, précisément ?
    C'est bon, j'ai trouvé la solution. Si ça peut servir aux autres:

    Java n'aime pas les noms génériques de type "adress". J'avais déjà fait l'expérience avec une table "order" que JDBC avait automatiquement renommé en "order1".

    Donc ici j'ai juste mis la table adresse entre crochets et ça fonctionne:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    select ord.OrderdataNum,
    ord.OrderdataInvoice,
    ord.OrderdataDate,
    ord.OrderdataTotalAmount,
    b.BookTitle,
    cmd.CmdLineQty,
    b.BookPrice,
    CONCAT (a.AddressStreet, ' ', a.AddressZip, ' ', a.AddressCity, ' ', a.AddressCountry)
    from OrderData ord
    left join CommandLine cmd on (cmd.OrderdataNum = ord.OrderdataNum)
    left join Book b on (b.BookIsbn = cmd.BookIsbn)
    left join [Address] a on (a.AddressId = ord.AddAddressid)
    where ord.CustomerId = '21'order by ord.OrderdataDate DESC;


    Comme quoi ça tient à peu de choses!

  4. #4
    Modérateur

    Je dirais plutôt le driver JDBC fourni par SQL Server, alors. Dans le reste du monde, ça n'existe pas, ce que tu nous décris là.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

###raw>template_hook.ano_emploi###