Mysql查询 - 使用join / union等

时间:2015-07-21 09:43:58

标签: php mysql

我的数据库中有4个名为客户的表(保存他们的个人详细信息以及他们在哪个项目中的房间),付款(保留他们的付款明细表示项目),项目(持有项目详情)和员工(持有员工登录详情)

我还有3个页面,我呼吁所有这些页面的数据(工作人员除外 - 一旦他们登录,会话等处理这些),但对于客户,付款和项目,我经常需要数据。

表的结构如下;

客户

UID - pID - rID - name - surname - roomtype

付款

UID - pID - total - paid 

项目

pID - name - hotel

至于结果我想检查谁(UID)在同一个房间(rID)中停留在同一个项目(pID)中,我还想单独检查他们的付款细节,无论他们是在单个房间还是双人房间。

我可以使用哪些查询可以获得如下结果,而不会在尽可能少查询的情况下对服务器造成太大压力?

实施例

+-------------------------------------------------------------------+
| rID    UID    pID    name    surname    roomtype    total    paid |
+-------------------------------------------------------------------+
| 1035   1010   301    John    Doe        double      200      200  |
|        1011   301    Jane    Doe        double      200      200  |
| 1036   1012   301    Fred    Nerk       single      150      150  |
+-------------------------------------------------------------------+

编辑:

我已将查询更改为;

$query = "SELECT p1.*,
    p2.total, p2.paid, p2.pmethod, p2.currency, p2.auth, p2.invoice,
    p3.pname, p3.pstartdate, p3.penddate, p3.photel, p3.pcity, p3.pstatus
    FROM customers p1 
    INNER JOIN payments p2 ON p1.UID=p2.UID
    INNER JOIN projects p3 ON p1.pID=p3.pID";
$guests = $mysqli->prepare($query);
$guests->execute();
$guests->store_result();

虽然说到$ guests-> fetch(),但我没有得到任何结果。我已经通过MYSQL Workbench检查了查询,正如@ Code-Monk所建议的那样 - 当它选择行时,它不会选择存储在表中的任何数据,因此不返回任何结果。任何人都可以在这里指出我的错误吗?

  • 结论 - 显然,我在customers表中的“UID”条目与其他条目不同。所以,现在它的工作原理。非常感谢你帮我解决这个问题,说实话,你为我节省了大量的工作和时间。知道你很棒,我很感激你没有时间帮助我。再次感谢你!荣誉和你的好业力:)

1 个答案:

答案 0 :(得分:1)

试试这个:

select p1.*,p2.total,p2.paid,p3.hotel from customers p1 
inner join payments p2 on p1.uid=p2.uid 
inner join projects p3 on p1.pid=p3.pid