IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

JDBC Java Discussion :

Requête SQL fonctionne avec SQL Server et uniquement avec TOP1 dans java!


Sujet :

JDBC Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2020
    Messages : 9
    Points : 9
    Points
    9
    Par défaut 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

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    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
    Futur Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2020
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    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

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    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

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/08/2018, 16h41
  2. Réponses: 2
    Dernier message: 21/11/2015, 12h46
  3. Réponses: 2
    Dernier message: 04/04/2006, 11h46
  4. [SQL server] Comment Fusionner des données dans une requête
    Par MoTUmBo dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/07/2005, 15h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo