0

私はこの機能を持っています:

function view_user_anunt($user) {
    $query="SELECT * FROM `anunturi`
            FULL OUTER JOIN tranzactie
            ON anunturi.tranzactie = tranzactie.id_tranzactie WHERE `anunturi.user`=:code";

        $stmt = $this->dbh->prepare($query);
        $stmt->bindParam(':code', $user, PDO::PARAM_INT);
        $stmt->execute();
        foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $result) 
        {
            $view[]="
            <tr>
            <td>".$result['id_anunt']."</td>
            <td>".$result['den_tranzactie']."</td>
            <td>".$result['den_proprietate']."</td>
            <td><a href='#' id='vizualizare'>Select</a></td>
            <td><a href='#' id='modificare'>Select</a></td>
            </tr>";

        }
    return $view;


}

および 3 つのテーブル:

アントゥリ

  • id_anunt (int) 自動インクリメント
  • トランザクティエ(int)
  • ヒント (int)
  • ユーザー(整数)

トランザクティエ

  • id_tranzactie (int) 自動インクリメント
  • den_tranzactie varchar

ヒント

  • id_proprietate (int) 自動インクリメント
  • den_proprietate varchar

anunturi.user = $user である anunturi から各行のトランザクション名 (den_tranzactie) と固有名 den_proprietate を取得するには、適切なクエリまたはアイデアが必要です。

前もって感謝します...

4

2 に答える 2

0

このSQLクエリを試してください

 $query="SELECT t1.*, t2.*, t3.*
         FROM table1 t1 
         LEFT JOIN table2 t2 ON t1.id = t2.foreightkey_id
         LEFT JOIN table3 t3 ON t1.id = t3.foreightkey_id
         WHERE t1.user=:code
";

INNER JOIN を使用して、すべてのテーブルにデータがある行のみを受け取ることができます。例えば

$query="SELECT t1.*, t2.*, t3.*
             FROM table1 t1 
             INNER JOIN table2 t2 ON t1.id = t2.foreightkey_id
             INNER JOIN table3 t3 ON t1.id = t3.foreightkey_id
             WHERE t1.user=:code
    ";

または、接続されている table1 と table2 からすべてのデータを取得し、接続されているテーブル 3 からのみデータを取得する場合

$query="SELECT t1.*, t2.*, t3.*
                 FROM table1 t1 
                 INNER JOIN table2 t2 ON t1.id = t2.foreightkey_id
                 LEFT JOIN table3 t3 ON t1.id = t3.foreightkey_id
                 WHERE t1.user=:code
        ";
于 2013-10-09T07:44:39.107 に答える