Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 28
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    75

    Eseguire select da due tabelle con unica query

    Salve, ho la necessita di eseguire un unica query su due tabelle differenti. Il database e un mysql. Vi faccio un esempio:

    1. Tabella1

    id id_utente data_tab1 luogo
    1 55 08-05-2015 Napoli
    2 26 08-08-2015 Roma
    3 55 09-05-2015 Milano

    2. Tabella2

    id id_utente data_tab2 nota1 nota2 nota3
    1 55 08-05-2015 nuoto cinema pizza
    2 26 08-05-2015 scuola casa casa
    3 55 09-05-2015 lavoro lavoro lavoro

    A me severe un output del genere:

    id_utente data_tab1 nota1 nota2 nota3 luogo
    55 08-05-2015 nuoto cinema pizza Napoli
    55 09-05-2015 lavoro lavoro lavoro
    Milano


    Come potrei fare?

  2. #2
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    fai una join su id_utente nelle due tabelle e tirati fuori i campi che ti servono
    un esempio
    codice:
    SELECT a.data_tab1, b.nota1, b.nota2 FROM Tabella1 as a INNER JOIN Tabella2 as b ON a.id_cliente = b.id_cliente WHERE id_cliente = 55

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    75
    Adesso faccio qualche prova... Ne messaggio precedente avevo dimenticato di scrivere che i dati devono essere estratti in base a un range di date quindi io adesso faccio cosi:

    codice:
    SELECT * FROM tabella1 WHERE data between '2015-05-02' and '205-05-09' and id_utente = '1' ORDER BY data DESC

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    75
    Ho fatto svariate prove, anche con inner join con questo ha funzionato, ma mi restituisce tre volte lo stesso valore....

    codice:
    SELECT tabella1.id_utente, data_tab1, luogo, nota1, nota2     FROM tabella1
         INNER JOIN tabella2
         ON tabella1.id_utente = tabella2.id_utente
    A parte che mi estrae i dati solo del id_utente 1, senza che io l'abbia specificato, ma poi non ho capito perchè mi restituisce i dati in questo modo:

    aaa
    bbb
    ccc
    aaa
    bbb
    ccc
    aaa
    bbb
    ccc

    A me serve una cosa "semplice" devo estrarre tutti i dati delle due tabelle che hanno in corrispondenza 2 campi

    1 campo = id_utente
    2 campo = data (data between '2015-05-02'and'205-05-09')

    Il tutto per evitare due query, perche i dati poi estratti devo convertirli i json. per questo mi serve un unico risultato.

  5. #5
    SELECT
    t1.id_utente, t1.data_tab1, t2.nota1, t2.nota2, t2.nota3, t1.luogo
    FROM
    Tabella1 t1 INNER JOIN Tabella2 t2 ON t1.id_utente = t2.id_utente
    WHERE
    t1.data_tab1 BETWEEN '2015-05-02' AND '2015-05-09'
    AND t2.data_tab2 BETWEEN '2015-05-02' AND '2015-05-09'

  6. #6
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    prova così, i campi data devono essere di tipo DATETIME
    codice:
    SELECT a.id_utente, a.data_tab1, a.luogo, b.nota1, b.nota2     
         FROM tabella1 a
             INNER JOIN tabella2 b
             ON a.id_utente = b.id_utente and a.data_tab1 = b.data_tab2
         WHERE a.data_tab1 BETWEEN "2015-05-08" AND "2015-05-09"

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    75
    Grazie ragazzi, adesso sembra andare bene, nelle prove che facevo io non utilizzavo gli alias per le tabelle. Faccio ancora delle prove per vedere se tutto funziona come dovrebbe.

    Una precisazione, quindi facendo il join di due campi, e come se fossero unite in uno solo campo giusto?

  8. #8
    Quote Originariamente inviata da bivio_08 Visualizza il messaggio
    Una precisazione, quindi facendo il join di due campi, e come se fossero unite in uno solo campo giusto?
    ???? cosa intendi?

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    75
    Forse mi sono spiegato male, il WHERE (es. id_utente) mi basta farlo solo sulla prima tabella, automaticamente sulla seconda tabella verranno estratti solo i dati con quelle condizione, avendo messo in correlazione i due campi giusto?

  10. #10
    sì, per come l'ha scritta claksu

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.