Pagina 1 di 9 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 82

Discussione: Dati da due tabelle

  1. #1

    Dati da due tabelle

    Ciao,

    ho un problemino.
    Supponiamo che ho una pagina che mi stampa dei dati estrapolati da una tabella, ok fin qui è semplicissimo.
    Mettiamo invece il caso che i dati che devo no essere stampati arrivino da due tabelle differenti, come faccio?
    Se prima ho una $query sulla tabella 1 come faccio ad aggiungere, ma che non sostituisca la precedente, una seconda query?
    Uffa non ci riesco!

    Per spiegarmi un esempio:

    Codice PHP:
    Print "<font size=2>$a_row[agent]
    $a_row[agph]"
    La riga "agent" sta bella tabella 1, la riga "agph" nella tabella 2, come faccio?
    [...Ubi iacet dimidium, iacet pectus meum...]

  2. #2
    le tabelle aranno una chiave che le lega.. cioè un campo in base a cui si uniscono una accanto all'altra, no?

    semplice allora...

    facciamo che sti due campi si chiamano x della prima tabella e y della seconda...

    SELECT agent, agph
    FROM tabella1 AS t1
    JOIN tabella2 AS2 ON t1.x = t2.y
    WHERE eventuali condizioni


  3. #3
    Originariamente inviato da }gu|do[z]{®©
    le tabelle aranno una chiave che le lega.. cioè un campo in base a cui si uniscono una accanto all'altra, no?

    semplice allora...

    facciamo che sti due campi si chiamano x della prima tabella e y della seconda...

    SELECT agent, agph
    FROM tabella1 AS t1
    JOIN tabella2 AS2 ON t1.x = t2.y
    WHERE eventuali condizioni

    Mmm grazie Guidoz...
    ci provo
    [...Ubi iacet dimidium, iacet pectus meum...]

  4. #4
    Originariamente inviato da badcat
    Mmm grazie Guidoz...
    ci provo

    se non hai capito entra più nel dettaglio e dimmi che campi hanno le due tabelle...

  5. #5
    Originariamente inviato da }gu|do[z]{®©
    se non hai capito entra più nel dettaglio e dimmi che campi hanno le due tabelle...
    C'ho sbattuto un pò la testa ma non ho ricavato nulla

    Allora ci sono due tabelle...una "Utenti" e una "Articoli"
    Nella tabella "utenti" ci sono i campi nome, telefono, mail
    Nella tabella "articoli" ci sono i campi 1,2,3 (il campo 1 è l'autore dell'articolo, quindi un campo in comune con la tabella "utenti")

    io vorrei che quando, per esempio, scelgo l'articolo 1.... in automatico si compilino i campi nome, cognome, mail pescandoli dalla tabella "utenti". Cioè sapendo che l'articolo è stato inserito da XYZ, che compaiano i dati di XYZ pescati dalla tabella "Utenti"

    Ufff..non so se mi sono spiegato
    [...Ubi iacet dimidium, iacet pectus meum...]

  6. #6
    Originariamente inviato da badcat
    Ufff..non so se mi sono spiegato
    sì, ti serve esattam,ente quello che ho detto sopra.. ovvero un join.. ma un join ha bisogno di una condizione di join.. ti chiedevo che campi hanno le tabelle per farti l'esempio della condizione di join sulle tue stesse tabelle...

    se ho capito bene la chiave della tabella utenti è "nome"... giusto? è questo nome che è ripetuto nella tabella articcoli per indicare chi è l'autore dell'articolo, giusto?

    Bene:

    Codice PHP:
    SELECT u.* //tutti i campi della tabella utenti 
    FROM Utenti AS //dalla tabella utenti chiamata "u" per comodità
    JOIN Articoli AS a ON a.1 u.nome //unita alla tabella Articoli (a) SOLO nelle "righe" in cui il cmapo 1 di a è uguale al campo nome di u (non ti interessa unire i dati dell'articolo di tizio con i dati dell'utente caio)
    WHERE u.nome 'XYZ' //e solo per l'utente XYZ 
    casomai per capire meglio divertiti a scrivere questo codice (leva i comemnti che non sono commenti sql validi ) dentro la finestra di query di phpmyadmin.. così ti rendi conto di cosa restituisce... e prova a vedere se togli "ON a.1 = u.nome" che succede

  7. #7
    Originariamente inviato da }gu|do[z]{®©
    sì, ti serve esattam,ente quello che ho detto sopra.. ovvero un join.. ma un join ha bisogno di una condizione di join.. ti chiedevo che campi hanno le tabelle per farti l'esempio della condizione di join sulle tue stesse tabelle...

    se ho capito bene la chiave della tabella utenti è "nome"... giusto? è questo nome che è ripetuto nella tabella articcoli per indicare chi è l'autore dell'articolo, giusto?

    Bene:

    Codice PHP:
    SELECT u.* //tutti i campi della tabella utenti 
    FROM Utenti AS //dalla tabella utenti chiamata "u" per comodità
    JOIN Articoli AS a ON a.1 u.nome //unita alla tabella Articoli (a) SOLO nelle "righe" in cui il cmapo 1 di a è uguale al campo nome di u (non ti interessa unire i dati dell'articolo di tizio con i dati dell'utente caio)
    WHERE u.nome 'XYZ' //e solo per l'utente XYZ 
    casomai per capire meglio divertiti a scrivere questo codice (leva i comemnti che non sono commenti sql validi ) dentro la finestra di query di phpmyadmin.. così ti rendi conto di cosa restituisce... e prova a vedere se togli "ON a.1 = u.nome" che succede
    Mo provo...
    ho ancora mezzo dubbio... vediamo che succede
    [...Ubi iacet dimidium, iacet pectus meum...]

  8. #8
    Originariamente inviato da }gu|do[z]{®©


    Codice PHP:
    SELECT u.* //tutti i campi della tabella utenti 
    FROM Utenti AS //dalla tabella utenti chiamata "u" per comodità
    JOIN Articoli AS a ON a.1 u.nome //unita alla tabella Articoli (a) SOLO nelle "righe" in cui il cmapo 1 di a è uguale al campo nome di u (non ti interessa unire i dati dell'articolo di tizio con i dati dell'utente caio)
    WHERE u.nome 'XYZ' //e solo per l'utente XYZ 

    SELECT u.* //tutti i campi della tabella utenti perdona la mia ignoranza... perchè "u.*" e non semplicemente "*"
    Che siginifica quel "a.1" ?
    [...Ubi iacet dimidium, iacet pectus meum...]

  9. #9
    Originariamente inviato da badcat
    SELECT u.* //tutti i campi della tabella utenti perdona la mia ignoranza... perchè "u.*" e non semplicemente "*"
    semplicemnete per ottimizzare...

    * = tutti i campi (di tutte le tabelle che unisci)
    u.* = tutti i cmapi della tabella utenti (per comodità chiamata u con un alias), perchè solo quelli ti servono a quanto hai detto

    Mi sono accorto di un piccolo errore comunque:
    questo ce l'ho messo per sbaglio...
    WHERE u.nome = 'XYZ'

    tu volevi i dati del'autore dell'articolo 1.. quindi
    WHERE a.id = 1

    supponendo che la chiave della tabella articoli sia id (mica li ho capitii i cmapi di quella tabella -.-)

    Che siginifica quel "a.1" ?
    eh.. tu hai scritto "ci sono i campi 1,2,3 (il campo 1 è l'autore dell'articolo, quindi un campo in comune con la tabella "utenti")"

    quindi vuol dire: il campo 1 della tabella a


    facciamo un esempio con due tabelle che dico io, percvhè le tue non le hai spiegate bene (non mi è ben chiaro quali siano le chiavi dei campi e quale sia il campo che lega le due tabelle)

    1)utenti (id, nome, cognome, telefono, email)
    dove id è la chiave
    3)articolo (id, autore, titolo, testo)
    Dove id è la chiave e "autore" si riferisce all'id dell tabella utenti (ovvero se l'articolo 1 è scritto dall'utente 5 il record comincia così: 1,5... etc etc)

    allora per prendere i dati dell'autore dell'articolo "X" farò:

    SELECT u.*
    FROM utenti AS u
    JOIN Articoli AS a ON a.autore = u.id
    WHERE a.id = 'X


    Se volessi solo l'indirizzo e-mail dell'autore dell'articolo X:

    SELECT u.email
    FROM utenti AS u
    JOIN Articoli AS a ON a.autore = u.id
    WHERE a.id = 'X

    Se volessi solo nome dell'autore e titolo dell'articolo X:
    SELECT u.nome, a.titolo
    FROM utenti AS u
    JOIN Articoli AS a ON a.autore = u.id
    WHERE a.id = 'X

    etc etc


  10. #10
    Originariamente inviato da }gu|do[z]{®©
    semplicemnete per ottimizzare...

    * = tutti i campi (di tutte le tabelle che unisci)
    u.* = tutti i cmapi della tabella utenti (per comodità chiamata u con un alias), perchè solo quelli ti servono a quanto hai detto

    Mi sono accorto di un piccolo errore comunque:
    questo ce l'ho messo per sbaglio...
    WHERE u.nome = 'XYZ'

    tu volevi i dati del'autore dell'articolo 1.. quindi
    WHERE a.id = 1

    supponendo che la chiave della tabella articoli sia id (mica li ho capitii i cmapi di quella tabella -.-)


    eh.. tu hai scritto "ci sono i campi 1,2,3 (il campo 1 è l'autore dell'articolo, quindi un campo in comune con la tabella "utenti")"

    quindi vuol dire: il campo 1 della tabella a


    facciamo un esempio con due tabelle che dico io, percvhè le tue non le hai spiegate bene (non mi è ben chiaro quali siano le chiavi dei campi e quale sia il campo che lega le due tabelle)

    1)utenti (id, nome, cognome, telefono, email)
    dove id è la chiave
    3)articolo (id, autore, titolo, testo)
    Dove id è la chiave e "autore" si riferisce all'id dell tabella utenti (ovvero se l'articolo 1 è scritto dall'utente 5 il record comincia così: 1,5... etc etc)

    allora per prendere i dati dell'autore dell'articolo "X" farò:

    SELECT u.*
    FROM utenti AS u
    JOIN Articoli AS a ON a.autore = u.id
    WHERE a.id = 'X


    Se volessi solo l'indirizzo e-mail dell'autore dell'articolo X:

    SELECT u.email
    FROM utenti AS u
    JOIN Articoli AS a ON a.autore = u.id
    WHERE a.id = 'X

    Se volessi solo nome dell'autore e titolo dell'articolo X:
    SELECT u.nome, a.titolo
    FROM utenti AS u
    JOIN Articoli AS a ON a.autore = u.id
    WHERE a.id = 'X

    etc etc

    Mentre tu scrivevi la risposta..sono arrivato a capire la sintassi... da solo
    Adesso mi studio la tua precisazione!

    Grazie ancora
    [...Ubi iacet dimidium, iacet pectus meum...]

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.