我的数据库中有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所建议的那样 - 当它选择行时,它不会选择存储在表中的任何数据,因此不返回任何结果。任何人都可以在这里指出我的错误吗?
答案 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