簡體   English   中英

B列表2中的返回值,其中A列表1匹配A列表2

[英]Return Value in Column B Table 2, where column A Table 1, matches Column A Table 2

我正在嘗試做的事情: 類別 (項目)id (市場)匹配的地方echo 類別 (市場)

表1樣本( 項目表)

項目表

表2樣本( 市場表)

在此處輸入圖片說明

PHP代碼樣本

$num_rec_per_page=5;
if (isset($_GET["page"])) { $page  = $_GET["page"]; } else { $page=1; }; 
$start_from = ($page-1) * $num_rec_per_page; 

 function GET($key) {
    return isset($_GET[$key]) ? $_GET[$key] : null;
}

$category= GET('category');

if ($category !== null) {
    $sql = "SELECT * FROM projects WHERE category='$category' LIMIT $start_from, $num_rec_per_page";
} else {
    $sql = "SELECT * FROM projects LIMIT $start_from, $num_rec_per_page";
}

$sql_query = mysql_query($sql);
$post = $sql_query;

$sql1 = "SELECT * FROM markets";
$sql_query1 = mysql_query($sql1);
$marketsinfo = mysql_fetch_array($sql_query1);

在下面的代碼中,我嘗試在主while循環中放置一個while循環,因為我們必須找出其所屬的類別,然后為每篇博客文章進行顯示。

它只對第一個結果起作用,然后我在網上進行了一些研究,發現這樣做是非常糟糕的設計。

我目前在哪里顯示結果(請參見連字符之間的代碼):

            <!-- Blog - Start -->
        <?php while ($post = mysql_fetch_array($sql_query)) {?>
        <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12 blog blog_altered blog_left">
            <div class="row">
                <!-- Blog Image - Start -->
                <div class=" col-lg-6 col-md-6 col-sm-10 col-xs-12  pic inviewport animated delay1" data-effect="fadeIn">
                    <img alt="blog-image" class="img-responsive" src="<?php echo $post['imageoutside'] ?>">
                </div>
                <!-- Blog Image - End -->
                <!-- Blog Info - Start -->
                <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12 inviewport animated delay1" data-effect="fadeIn">
                    <div class="info">
----------------------------------------------------------------------
                        <span class="date">
                        <?php
                            if($post['category'] === $marketsinfo['id']){
                                echo $marketsinfo['category'];
                            }
                         ?>
                         </span>
----------------------------------------------------------------------
                        <h4 class="title"><a href="projects/readmore.php?job=<?php echo $post['job'] ?>"><?php echo $post['title'] ?></a></h4>
                        <p><?php echo $post['summary'] ?></p>
                        <a class="btn btn-primary text-on-primary"  href="projects/readmore.php?job=<?php echo $post['job'] ?>">Read More</a>
                    </div>
                </div>
                <!-- Blog Info - End -->
            </div>
        </div>
        <?php } ?>
            <!-- Blog - End -->

希望我已經足夠徹底,不要感到困惑。 新手如何才能做到這一點? 我會告訴你的!

如果使用聯接,則可以在一個查詢中獲得類別文本,並避免PHP中的所有循環。

向左聯接將返回項目中的所有記錄,並且僅返回與市場匹配的那些記錄。 因此,如果市場中不存在項目類別,則將返回NULL值。

如果使用INNER JOIN,則僅返回兩個表中具有相應值的記錄。

經驗法則:在需要時一次性從數據庫中獲取所需的數據。 格式為PHP,SQL為Datagrab。 不要得到比您需要的多的東西,也不要少得到的。

SELECT P.Job, M.ID as Markets_ID, M.Category, P.Title
FROM projects P
LEFT JOIN Markets M
 on P.Category =M.ID 
WHERE P.category='$category'   
LIMIT $start_from, $num_rec_per_page"

注意:您需要在where子句中的類別上放置一個表別名。 我假設您傳遞了ID,因此使用了P.Category。

是否要按類別將表項目與表市場一起加入? 也許你可以做到這一點

SELECT p.id as id
     , m.category as category 
  from projects as p 
  left 
  join markets as m 
    on p.category = m.id 
 WHERE m.category='$category' 
 LIMIT $start_from
     , $num_rec_per_page

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM