2015-05-18 10 views
5

soo ho 2 tabelle.ottenere informazioni da un'altra tabella dove id = id

train_information
user_train_information

Quando qualcuno invia qualcosa in una forma. di venire messo nella tabella train_information e si presenta così:

what it looks like after the form is submitted

Ora, quando le persone vengono registrati nel e selezionare il treno da un selettore. la sua accade nel database:

when people select the train

In una altra pagina, voglio gli utenti di vedere un intero elenco di cose hanno selezionato nel tempo. Così ho eseguire una query: SELECT * FROM user_train_information WHERE user_id=user_id;

Questo mi mostra la tabella user_train_information Ma è posible per mostrare la train_information dove user_id = id_utente? perché voglio che l'utente mostri i treni che ha aggiunto.

EDIT:

quello che ho adesso:

function testingggg() { 
     $sql = "SELECT * 
FROM train_information 
INNER JOIN user_train_information 
ON train_information.train_id = user_train_information.train_id 
WHERE user_train_information.user_id = user_id"; 
     $sth = $this->pdo->prepare($sql); 
     $sth->bindParam("user_id", $_GET["user_id"], PDO::PARAM_INT); 
     $sth->execute(); 
     return $sth->fetchAll(); 
    } 

e chiamo io qui:

<?php 
     $summary = $database->testingggg(); 
    ?> 
    <?php 
     foreach ($summary as $result){ 
     echo $result['train_name']; 
    } 
?> 

ottengo l'errore:

error

+0

Usa Join per quella tabella –

+0

'training_information' non ha colonna' user_id'! – Jens

+0

Tru @Jens, ma entrambi hanno la colonna train_id – Mitch

risposta

1

Questo è il modo che uso query in questo caso e funziona. Nel tuo caso c'è ambiguità da qualche parte. Assicurati inoltre di avere il valore corretto in $ _GET ["user_id"]. Si prega di verificare

function testingggg() { 
     $sql = "SELECT ti.train_name, ti.train_id, uti.user_id 
       FROM train_information as ti 
       JOIN user_train_information as uti 
       ON ti.train_id = uti.train_id 
       WHERE uti.user_id = :user_id"; 
     $sth = $this->pdo->prepare($sql); 
     $sth->bindParam(":user_id", $_GET["user_id"], PDO::PARAM_INT); 
     $sth->execute(); 
     return $sth->fetchAll(); 
    } 
+1

Funziona con questo codice :) Grazie mille! – Mitch

-1

È prova questo.

SELECT * FROM train_information INNER JOIN user_train_information 
    ON train_information.train_id = user_train_information.train_id 
    WHERE user_train_information.user_id = $user_id; 
+0

puoi farlo usando INNER JOIN. –

+0

Fatto un edit @ user3113490 – Mitch

-1
SELECT * 
FROM train_information 
     INNER JOIN user_train_information 
       ON train_information.train_id = user_train_information.train_id 
WHERE user_train_information.user_id = user_id; 
0
SELECT t.train_id 
    , t.country_id train_country_id 
    , t.train_name 
    , t.number_of_bogies 
    , t.number_of_axles 
    , t.wheel_diameter_min 
    , t.wheel_diameter_max 
    , u.user_row_id 
    , u.user_id 
    , u.country_id user_country_id 
    FROM user_train_information u 
    JOIN train_information t 
    ON t.train_id = u.train_id 
WHERE u.user_id = :user_id;