我有这个功能:
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 (整数( 自动增量
- Tranzactie(int(
- 尖端(整数(
- 用户(整数(
特兰扎克蒂
- id_tranzactie(整数(自动增量
- den_tranzactie瓦尔查尔
提示
- id_proprietate(整数(自动增量
- den_proprietate瓦尔查尔
我需要一个好的查询或 ideea 来获取交易名称 (den_tranzactie( 和专有名称den_proprietate从 anunturi 中获取每一行,其中 anunturi.user = $user。
提前感谢...
试试这个 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
";
或者,如果您想从表1和表2中获取已连接的所有数据,并且仅从表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
";
像这样的东西?
'
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