我需要一个很好的mysql查询来接收来自3个表的信息

时间:2013-10-09 07:27:57

标签: php mysql sql

我有这个功能:

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个表:

anunturi

  • id_anunt(int)自动增量
  • tranzactie(int)的
  • tip(int)
  • 用户(int)的

tranzactie

  • id_tranzactie(int)自动增量
  • den_tranzactie varchar

提示

  • id_proprietate(int)自动增量
  • den_proprietate varchar

我需要一个好的查询或ideea来获取anunturi的每一行的事务名称(den_tranzactie)和所有者名称den_proprietate,其中anunturi.user = $ user。

提前致谢...

2 个答案:

答案 0 :(得分:0)

这样的东西?

'
SELECT t.den_tranzactie, tip.den_proprietate 
FROM
anunturi a
JOIN tranzactie t ON a.tranzactie = t.id_tranzactie 
JOIN tip ON a.tip = tip.id_proprietate 
WHERE a.user =:code

答案 1 :(得分: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
        ";