Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di HammerFist
    Registrato dal
    May 2005
    Messaggi
    1,110

    [MYSQL] join tra tabelle e range di date

    Ciao ragazzi,
    ho bisogno di un aiuto...
    in pratica io avevo scritto un codice in php che interrogava il DB al fine di recuperare un elenco di dati...
    con il tempo ho avuto necessità di aggiungere alla ricerca la possibilità di ricercare i dati per range di date

    ora nel DB all'inizio non era previsto un campo DATA... perciò per ovviare al problema ho creato una nuova tabella associando l'id del documento con un campo date...

    per fare adesso la ricerca dovrei perciò fare una join tra le due tabelle in modo tale da prendere i dati dalla Tabella DOCUMENTI che però siano nel range di date presente nella Tabella ass_data_doc... come posso fare? aiuto...

    SELECT * FROM documenti AS a, ass_data_doc AS b WHERE ((a.codice like '%rhy%') AND (a.ragsociale like '%rth%') AND (a.cognome like '%trh%') AND (a.piva like '%rth%') BETWEEN '' AND '') order by a.id DESC
    Forumista Kriptoniano

  2. #2
    E' inutile usare due tabelle. Crea un campo date nella prima tabella, e copiaci il contenuto della seconda.

    Per copiare i valori, dopo aver creato il campo:
    UPDATE tab1 SET date = (SELECT tab2.date FROM tab2 WHERE tab2.id = tab1.id);
    STK/Unit: Unit Test framework per MariaDB
    http://stk.wikidot.com/stk-unit

  3. #3
    Utente di HTML.it L'avatar di HammerFist
    Registrato dal
    May 2005
    Messaggi
    1,110
    SELECT * FROM documenti AS a, ass_data_doc AS b WHERE ((a.codice like '%rhy%') AND (a.ragsociale like '%rth%') AND (a.cognome like '%trh%') AND (a.piva like '%rth%') AND (a.id = b.id_doc) AND (b.data BETWEEN "2013-12-10" AND "2013-12-24")
    Forumista Kriptoniano

  4. #4
    Quote Originariamente inviata da HammerFist Visualizza il messaggio
    SELECT * FROM documenti AS a, ass_data_doc AS b WHERE ((a.codice like '%rhy%') AND (a.ragsociale like '%rth%') AND (a.cognome like '%trh%') AND (a.piva like '%rth%') AND (a.id = b.id_doc) AND (b.data BETWEEN "2013-12-10" AND "2013-12-24")
    se per ogni record della documenti c'è un solo record anche nella ass_data_doc allora puoi tranquillamente andare in join

    del tipo :
    SELECT a.*
    FROM Documenti a
    INNER JOIN ass_data_doc b ON b.id_doc=a.id
    WHERE <condizioni>

    se per ogni record della documenti trovi più record nella ass_data_doc attenzione che i record si moltiplicano quindi metti una DISTINCT.
    Al contrario se c'è qualche documento senza nulla nella ass_data_doc potresti non vedere il record ma sopperisci con una LEFT OUTER JOIN al posto della INNER...
    Se ti stai approcciando all'argomento database dai uno sguardo anche a: SQL, database relazionale, regole di Codd, modello E-R, forme normali, normalizzazione con il mio testo: Semplicemente Database

  5. #5
    se per ogni record della documenti c'è un solo record anche nella ass_data_doc allora puoi tranquillamente andare in join

    del tipo :
    SELECT a.*
    FROM Documenti a
    INNER JOIN ass_data_doc b ON b.id_doc=a.id
    WHERE <condizioni>

    se per ogni record della documenti trovi più record nella ass_data_doc attenzione che i record si moltiplicano quindi metti una DISTINCT.
    Al contrario se c'è qualche documento senza nulla nella ass_data_doc potresti non vedere il record ma sopperisci con una LEFT OUTER JOIN al posto della INNER...
    Se ti stai approcciando all'argomento database dai uno sguardo anche a: SQL, database relazionale, regole di Codd, modello E-R, forme normali, normalizzazione con il mio testo: Semplicemente Database

  6. #6
    Utente di HTML.it L'avatar di HammerFist
    Registrato dal
    May 2005
    Messaggi
    1,110
    Quote Originariamente inviata da smartsql Visualizza il messaggio
    se per ogni record della documenti c'è un solo record anche nella ass_data_doc allora puoi tranquillamente andare in join

    del tipo :
    SELECT a.*
    FROM Documenti a
    INNER JOIN ass_data_doc b ON b.id_doc=a.id
    WHERE <condizioni>

    se per ogni record della documenti trovi più record nella ass_data_doc attenzione che i record si moltiplicano quindi metti una DISTINCT.
    Al contrario se c'è qualche documento senza nulla nella ass_data_doc potresti non vedere il record ma sopperisci con una LEFT OUTER JOIN al posto della INNER...
    adesso sì che mi devo concentrare...
    grazie per l'aiuto, faccio un giro su google per capire come meglio sfruttare il tuo suggerimento ... in caso ti chiedo aiuto
    Forumista Kriptoniano

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.