首页 文章

SQL如果y.table1 = y.table2多个表,则从table2中选择x行

提问于
浏览
0

我有两个不同的表: categoriesproducts . 每个表都有 category_id 列 . 为了在 SELECT-ing 时输出数组,我正在使用 echo htmlentities .

选择产品名称和价格等字段的SQL语法是什么产品 category_id=categories category_id? (行 Headers 相同 - >名称(在prod . 上)和名称(在cat上) .

请记住,我首先要根据产品表中的标准选择产品,之后如果 category_id 来自cat . 表等于产品表中的category_id然后它将显示类别名称(WHICH IS IN类别表)

这是原始代码:

<?php
include('includes/global.php');

$sql = $db->query("SELECT name FROM ".DB_PREFIX."products WHERE active=1 AND closed=0 AND deleted=0 AND approved = 1 AND name LIKE '%".htmlentities($_GET["search"],  ENT_QUOTES)."%' LIMIT 20");

while($product_array = $db->fetch_array($sql)) {
    echo htmlentities($product_array["name"], ENT_QUOTES, $lang[codepage])."\n";
}

这是我试过的:

$sql = $db->query("SELECT a.name,a.buy_price,c.name FROM ".DB_PREFIX."products a WHERE active=1 AND closed=0 AND deleted=0 AND approved = 1 AND name LIKE '% ".htmlentities($_GET["search"],  ENT_QUOTES)."%' INNER JOIN ".DB_PREFIX."categories c ON a.category_id = c.category_id LIMIT 20");

while($product_array = $db->fetch_array($sql)) {
    echo htmlentities($product_array["name"], ENT_QUOTES, $lang[codepage])." for ";
    echo htmlentities($product_array["buy_price"], ENT_QUOTES, $lang[codepage])." from category ";
    echo htmlentities($product_array[" * categoryname"], ENT_QUOTES, $lang[codepage])."\n";
}

有什么建议?

2 回答

  • 0

    我认为这是一个有序的问题,整个表需要先构建 .

    SELECT a.name,a.buy_price,c.name FROM ".DB_PREFIX."products a 
    INNER JOIN ".DB_PREFIX."categories c ON a.category_id = c.category_id 
    WHERE active=1 AND closed=0 AND deleted=0 AND approved = 1 AND name LIKE '% ".htmlentities($_GET["search"],  ENT_QUOTES)."%' 
    LIMIT 20
    
  • 0

    这是我得到的最终代码,在搜索时没有输出(在相应的搜索框中) . 我个人认为合并两个表中的数据存在问题 . 或许我认为这不是回应这些问题的正确方法 .

    $sql = $db->query("SELECT a.name,c.name,a.buyout_price FROM ".DB_PREFIX."auctions a INNER JOIN ".DB_PREFIX."categories c ON a.category_id = c.category_id WHERE active=1 AND closed=0 AND deleted=0 AND approved = 1 AND a.name LIKE '% ".htmlentities($_GET["search"],  ENT_QUOTES)."%' LIMIT 20");
    
    while($product_array = $db->fetch_array($sql)) {
        echo htmlentities($product_array["a.name"], ENT_QUOTES, $lang[codepage])." from category ";
        echo htmlentities($product_array["c.name"], ENT_QUOTES, $lang[codepage])." for ";
        echo htmlentities($product_array["a.buyout_price"], ENT_QUOTES, $lang[codepage])." EUR \n";}
    

相关问题