2017-08-12 132 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 
    } 
    ?> 

結果將僅拉取當前登錄的成員成員類型存在於我們在查詢語句內指定的特定列中的特定行。

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