Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [sql] lui, il precedente e il successivo

    Dunque, dovrei scrivere una query, ma mi vengono in mente tutte soluzioni complesse, e spesso quando sono complesse sono anche sbagliate quindi chiedo anche a voi.

    Ho una tabella, chiave numerica ID e diversi dati, tra cui una data.
    Saputo un certo ID, avrei bisogno di recuperare i due record che, ordinando la tabella per data, sarebbero il precedente e il successivo di quello individuato dall'ID.
    Proposte?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di Teuzzo
    Registrato dal
    Mar 2002
    Messaggi
    969
    (
    SELECT *
    FROM TABELLA
    WHERE ID > $id
    ORDER BY DATA
    LIMIT 1
    )
    UNION (
    SELECT *
    FROM TABELLA
    WHERE ID < $id
    ORDER BY DATA DESC
    LIMIT 1
    )

  3. #3
    intanto grazie per il tentativo, comunque:
    1) la data può essere modificata quindi non è detto che a ID maggiore corrisponda data maggiore

    2) ieri sera ho provato la union e usando quella sintassi mi si piantava il client, sembra che non digerisca le parentesi intorno alle query (che in quel caso sono però obbligatorie per via del order by), non capisco perché. :master:

  4. #4
    Utente di HTML.it L'avatar di Teuzzo
    Registrato dal
    Mar 2002
    Messaggi
    969
    La sintassi l'ho provata e a me funziona (mysql 4.0.20).

    A questo punto ti conviene fare 2 query, con la prima ti trovi la data del tuo id e con l'altra i due record precedente e successivo:

    (SELECT *
    FROM TABELLA
    WHERE DATA <=$data AND ID<>$id
    ORDER BY DATA DESC
    LIMIT 1)
    UNION
    (SELECT *
    FROM TABELLA
    WHERE DATA >=$data AND ID<>$id
    ORDER BY DATA
    LIMIT 1)

    Se hai mysql >= 4.1 puoi fare tutto con una sola query utilizzando le subqueries.

  5. #5
    Sicuramente il server non ha nessun problema, io la query l'ho provata con MysqlFront, è possibile che ci sia un bug su quest'ultimo con le ultime funzionalità tipo union e subquery.

    Comunque grazie.

  6. #6
    Magari non è l'ultima versione, oppure se è così segnala il bug che fai bene

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.