2017-08-12 133 views
0

我想一个过滤器添加到它涉及到一个数据库中3个不同的数据库表的查询。如何筛选的多个数据库表的查询结果

我能最初创建的使用下面的代码我试图获取信息和环成一个表的完整列表。

<?php 
    global $wpdb; 
    $result = $wpdb->get_results("SELECT * FROM meetings, new_meetings WHERE Type = '$type' ORDER BY code, Unit, Number"); 
    // $query = "SELECT * FROM meetings, new_meetings WHERE Type = '$type' ORDER BY code, Unit, Number"; 
    // $result = $wpdb->get_results($query); 
?> 

<?php foreach ($result as $query) { 
?> 

// Table Loop Here 

<php 
    } 
?> 

但是,当试图将代码更改为我在下面的代码时,我没有看到任何结果。我哪里出了问题,我会如何解决这个问题?

<?php 
    global $wpdb; 
    $userid = $current_user->user_login; 
    $type = $wpdb->get_results("SELECT type FROM dbtable1 WHERE Member = '$userid'"); // 
    // $membertype = "SELECT type FROM dbtable1 WHERE Member = '$userid'"; 
    // $type = $wpdb->get_results($membertype); 

    $result = $wpdb->get_results("SELECT * FROM meetings, new_meetings WHERE Type = '$type' ORDER BY code, Unit, Number"); 
     // $query = "SELECT * FROM meetings, new_meetings WHERE Type = '$type' ORDER BY code, Unit, Number"; 
     // $result = $wpdb->get_results($query); 
    } 
?> 

<?php foreach ($result as $query) { 
?> 

// Table Loop Here 

<?php 
} 
?> 

这是循环。 (下降了简单的造型元素)

<table> 
    <tr> 
    <th>Member Type</th> 
    <th>Date</th> 
    <th>Location</th> 
    <th>Description</th> 
    <th>Contact Info</th> 
    </tr> 
    <tr> 
    <td><?php echo $query->Type; ?></td> 
    <td><?php if($query->Date!=""){echo date('m/d/y', strtotime($query->Date)); } ?></td> 
    <td><?php echo $query->Location; ?></td> 
    <td><?php echo $query->Desc; ?></td> 
    <td><?php echo $query->Info; ?></td> 
    </tr> 
</table> 

我使用这两个页面,不过第二代码片段未在前端填充任何在同一回路,当我查看该页面,其中第一个代码段

在第一个代码片段,我可以加载所有会议类型的所有会议和新会议,但第二个代码片段,我已经尝试添加一个额外的SQL查询,以根据登录的用户筛选结果为特定的成员类型似乎并没有产生任何结果,即使我可以在mysql中看到结果在那里。

我怎样才能以正确筛选第一片段结果部件的具体“类型”编辑的第二代码片段。

+0

什么是你的'$ type'变量,这将是对他人有用?我应该和你的'$ result'类似。因此,您必须从'$ type'获得所需的值,然后才能将i提供给第二个查询... –

+0

有三种类型的成员,第一个查询只是加载所有会议和新会议,而不管成员类型你是。这工作得很好。但是,当我在上面添加类型变量时,我根本得不到任何结果。 – DigitalDesigner

+0

请解释你正在寻找的结果集。也请提供3个表格的表格结构和关系。 – Goldbug

回答

0

行,所以我已经能够成功地完成我的目标,现在有过滤的结果填充页面上。

我所描述的变化,我不得不做出和我的代码使用下面

最终虽然有点更先进的声明结果是更清洁的使用较少的代码行这是一个很好的查询奖金。

我不得不创建多个单独的查询更改和使用"INNER JOIN"关键字他们都达到高潮到一个查询。

,从那里作为连接正确的记录其中有各种表格内的匹配值一样简单。

这里是旧代码再次参考

<?php 
    global $wpdb; 
    $result = $wpdb->get_results("SELECT * FROM meetings, new_meetings WHERE Type = '$type' ORDER BY code, Unit, Number"); 
     // $query = "SELECT * FROM meetings, new_meetings WHERE Type = '$type' ORDER BY code, Unit, Number"; 
     // $result = $wpdb->get_results($query); 
    ?> 

<?php 
    global $wpdb; 
    $userid = $current_user->user_login; 
    $type = $wpdb->get_results("SELECT type FROM dbtable1 WHERE Member = '$userid'"); // 
     // $membertype = "SELECT type FROM dbtable1 WHERE Member = '$userid'"; 
     // $type = $wpdb->get_results($membertype); 

    $result = $wpdb->get_results("SELECT * FROM meetings, new_meetings WHERE Type = '$type' ORDER BY code, Unit, Number"); 
     // $query = "SELECT * FROM meetings, new_meetings WHERE Type = '$type' ORDER BY code, Unit, Number"; 
     // $result = $wpdb->get_results($query); 
    } 
    ?> 

    <?php foreach ($result as $query) { 
    ?> 

这里是修改后的查询。

<?php 
global $wpdb; 
$userid = $current_user->user_login; 
$result = $wpdb->get_results("SELECT * FROM meetings as A inner join dbtable1 as B on A.Type = B.Type inner join new_meetings as C on C.Type = A.Type where B.Member = '$userid'"); 
// $query = "SELECT * FROM meetings as A inner join dbtable1 as B on A.Type = B.Type inner join new_meetings as C on C.Type = A.Type where B.Member = '$userid'"; 
// $result = $wpdb->get_results($query); 
    ?> 

    <?php foreach ($result as $query) { 
    ?> 
// Table Loop Here 

    <?php 
    } 
    ?> 

结果将仅拉取当前登录的成员成员类型存在于我们在查询语句内指定的特定列中的特定行。

希望,因为它是我研究它:)