Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 仅从我的SELECT语句返回4个ID_Php_Mysql_Select_Foreach - Fatal编程技术网

Php 仅从我的SELECT语句返回4个ID

Php 仅从我的SELECT语句返回4个ID,php,mysql,select,foreach,Php,Mysql,Select,Foreach,在我的查询中,我将通过6个表从所有6个表中获取信息。查询确实有效,但我只返回前4个ID以及链接到这些ID的信息。有人能看出我的问题出在哪里吗 PS:我通过foreach循环我的查询,这样所有的信息都会显示在一个漂亮的表中 选择v.klantNummer, v、 纳姆, v、 telefoon, v、 阿迪斯, v、 邮政编码, 纳姆先生, sm.CSnummer, 奥德霍德斯达姆酒店 从'vesting'变为v, 系统作为s, 作为sc的系统合同, onderhoudsLog作为ol, syst

在我的查询中,我将通过6个表从所有6个表中获取信息。查询确实有效,但我只返回前4个ID以及链接到这些ID的信息。有人能看出我的问题出在哪里吗

PS:我通过foreach循环我的查询,这样所有的信息都会显示在一个漂亮的表中

选择v.klantNummer, v、 纳姆, v、 telefoon, v、 阿迪斯, v、 邮政编码, 纳姆先生, sm.CSnummer, 奥德霍德斯达姆酒店 从'vesting'变为v, 系统作为s, 作为sc的系统合同, onderhoudsLog作为ol, systeemMeldkamer作为sm, meldkamers AS mk 其中sm.id=s.id 和mk.id=s.id v.id=s.vestigingID s.id=sc.systeemID 和sc.id=ol.SYSTEEMContracid 这是我的荣幸:

foreach($DB->SELECT->onderhoudsGegevens() as $row) {
?>
  <tr>
    <td><?= $row['klantNummer'] ?></td>
    <td><?= $row['contactnaam'] ?></td>
    <td><?= $row['telefoon'] ?></td>
    <td><?= $row['adres'] ?></td>
    <td><?= $row['postcode'] ?></td>
    <td><?= $row['naam'] ?></td>
    <td><?= $row['CSnummer'] ?></td>
    <td><?= datetimeToDate($row['onderhoudsDatum']) ?></td>
  </tr>
   <?php
}
?>

下面是您的查询,它是使用连接的更传统的形式重新编写的。如果您的一个或多个 表中没有满足条件的行,可以将其各自的联接更改为左联接或外联接

SELECT 
    v.klantNummer, 
    v.contactnaam, 
    v.telefoon, 
    v.adres, 
    v.postcode, 
    mk.naam, 
    sm.CSnummer, 
    ol.onderhoudsDatum 
FROM `vestiging` AS v
JOIN systeem AS s
    ON v.id = s.vestigingID
JOIN systeemContract AS sc
    ON s.id = sc.systeemID
JOIN onderhoudsLog AS ol
    ON sc.id = ol.systeemContractID
JOIN systeemMeldkamer AS sm
    ON sm.id = s.id
JOIN meldkamers AS mk
    ON mk.id = s.id
例如,如果meldlamers表是限制结果的表,您可以尝试:

SELECT 
    v.klantNummer, 
    v.contactnaam, 
    v.telefoon, 
    v.adres, 
    v.postcode, 
    mk.naam, 
    sm.CSnummer, 
    ol.onderhoudsDatum 
FROM `vestiging` AS v
JOIN systeem AS s
    ON v.id = s.vestigingID
JOIN systeemContract AS sc
    ON s.id = sc.systeemID
JOIN onderhoudsLog AS ol
    ON sc.id = ol.systeemContractID
JOIN systeemMeldkamer AS sm
    ON sm.id = s.id
LEFT JOIN meldkamers AS mk
    ON mk.id = s.id

尝试上面的查询以查看是否获得更多行。如果没有,请将LEFT一次添加到其他行,直到看到更多行。

因为查询中没有限制,您可以通过phpMyAdmin或MySQL控制台直接查看数据库,看看是否应该有更多的结果毕竟所有表中只能有4行?如果您对表使用正确的联接,可能会更容易理解。如前所述,如果其中一个表只有4个匹配行,您的结果将受到该表的限制。没有足够的信息让我们真正回答您的问题,我们所能做的只是猜测。您可以从查询中删除一些表和联接,这样就只剩下基本内容了,跟踪似乎是您的主表。请记住,如果这些额外表中的任何一个表没有用于跟踪的行的数据,那么该行将不会显示。也许他需要这些子表中的一些作为外部联接,这样就不会影响他的结果。。。但是,是的,我们只是猜测。信息太少,无法继续。谢谢!这成功了!不得不把左边的位置放在一排,但它成功了:,谢谢你!