我需要将2列连接到1列,但我无法弄清楚如何连接这些列。 这就是它的样子:
表(预约)
-------------------------------------------
| id | home | salesman | buyer | date |
| 1 | 3 | 2 | 4 | 12-6-2016|
| 2 | 1 | 1 | 3 | 15-6-2016|
| 3 | 2 | 5 | 6 | 20-6-2016|
-------------------------------------------
表(人)
---------------------------------------------------------
| id | name | email | phonenumber | permission |
| 1 | John | John@gmail.com | 12345678 | 1 |
| 2 | Jack | Jack@gmail.com | 12345678 | 1 |
| 3 | Henk | Henk@gmail.com | 12345678 | 0 |
| 4 | Mike | Mike@gmail.com | 12345678 | 0 |
| 5 | Tom | Tom@gmail.com | 12345678 | 1 |
| 6 | Ben | Ben@gmail.com | 12345678 | 0 |
---------------------------------------------------------
表(主)
--------------------------------------
| id | salesman | price | city |
| 1 | 2 | 123000 | London |
| 2 | 1 | 123000 | New York |
| 3 | 5 | 123000 | Paris |
--------------------------------------
这就是我想在php页面上看到它的方式:
-------------------------------------------------
| home | salesman | buyer | date |
| Home in Paris | Jack | Mike | 12-6-2016|
| Home in London | John | Henk | 15-6-2016|
| Home in New York| Tom | Ben | 20-6-2016|
-------------------------------------------------
获得许可的人1是推销员,权限0是购买者。
所以我的问题是,如何将数字更改为正确的值?不将表约会中的数字更改为数据库中的值...
我对SQL知之甚少,所以有人可以提供一个不是示例的解决方案,并且可以使用我的表和列吗?
修改
表(afspraak)
-------------------------------------------
| id | huis | verkoper | koper | datum |
| 1 | 3 | 2 | 4 | 12-6-2016|
| 2 | 1 | 1 | 3 | 15-6-2016|
| 3 | 2 | 5 | 6 | 20-6-2016|
-------------------------------------------
表(persoon)
---------------------------------------------------------
| id | naam | email | phonenumber | rechten |
| 1 | John | John@gmail.com | 12345678 | 1 |
| 2 | Jack | Jack@gmail.com | 12345678 | 1 |
| 3 | Henk | Henk@gmail.com | 12345678 | 0 |
| 4 | Mike | Mike@gmail.com | 12345678 | 0 |
| 5 | Tom | Tom@gmail.com | 12345678 | 1 |
| 6 | Ben | Ben@gmail.com | 12345678 | 0 |
---------------------------------------------------------
表(Huis区)
--------------------------------------
| id | verkoper | prijs | stad |
| 1 | 2 | 123000 | London |
| 2 | 1 | 123000 | New York |
| 3 | 5 | 123000 | Paris |
--------------------------------------
我的PHP代码:
include('config.php');
$getAfspraak = "SELECT CONCAT('Home in ', HO.stad) AS Home,
SA.`naam` AS verkoper,
BU.`naam` AS koper,
AP.`datum`
FROM afspraak AP
INNER JOIN huis HO ON HO.id = AP.huis
INNER JOIN persoon SA ON SA.id = AP.verkoper AND SA.rechten = 1
INNER JOIN persoon BU ON BU.id = AP.koper AND BU.rechten = 0";
//Inner join for huis SELECT afspraak.huis, huis.stad FROM afspraak INNER JOIN huis ON afspraak.huis = huis.id; This query should show "huis in [stad]" it means, a home in London.
$dataAfspraak = mysqli_query($con, $getAfspraak) or die(mysqli_error($con));
<table cellspacing=1 border=0 width=100%>
<tr>
<th>Koper</th>
<th>Verkoper</th>
<th>Huis</th>
<th>Datum</th>
</tr>
<?php while($resAfspraak = mysqli_fetch_assoc($dataAfspraak)): ?>
<tr>
<td><?php echo $resAfspraak['koper']?></td> <!-- value is naam if the row has 0 at rechten -->
<td><?php echo $resAfspraak['verkoper']?></td> <!-- value is naam if the row has 1 at rechten -->
<td><?php echo $resAfspraak['huis']?></td>
<td><?php echo $resAfspraak['datum']?></td>
</tr>
<?php endwhile;?>
答案 0 :(得分:0)
SELECT CONCAT('Home in ', HO.city) AS Home,
SA.`Name` AS Salesman,
BU.`Name` AS Buyer,
AP.`Date`
FROM Appointment AP
INNER JOIN Home HO ON HO.Id = AP.Home
INNER JOIN Person SA ON SA.Id = AP.Salesman AND SA.Permission = 1
INNER JOIN Person BU ON BU.Id = AP.Buyer AND BU.Permission = 0
<强>更新强>
您无需从单独的联接中获取huis
值。以下查询返回koper, verkoper, huis
和datum
值。
$getAfspraak = "SELECT BU.naam AS koper, SA.naam AS verkoper, CONCAT('Huis in ', HO.stad) AS Huis, AP.datum
FROM afspraak AP
INNER JOIN huis HO ON HO.id = AP.huis
INNER JOIN persoon SA ON SA.id = AP.verkoper AND SA.rechten = 1
INNER JOIN persoon BU ON BU.id = AP.koper AND BU.rechten = 0";
$dataAfspraak = mysqli_query($con, $getAfspraak) or die(mysqli_error($con));