2013-05-22 37 views
1

我目前有一个使用动态输入在我的表单(term)中输出变量的数组的查询,这会创建一个动态搜索并使用自动完成来填充所有产品的详细信息。如何使用动态调用在另一个表中获取另一个值

$return_arr = array(); 
$param = $_GET["term"]; 
    $fetch = mysql_query("SELECT * FROM crd_jshopping_products WHERE `name_en-GB` REGEXP '^$param'"); 
    while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) { 
    //$row_array['category_id'] = $row ['category_id']; 

$row_array['product_id'] = $row['product_id']; 
    $row_array['product_names'] = $row['name_en-GB']; 
    $row_array['jshop_code_prod'] = $row['product_ean']; 
    $row_array['_ext_price_html'] = number_format($row['product_price'],2); 
if (!empty($row['product_thumb_image']) AND isset($row['product_thumb_image'])){ 
$row_array['image'] = $row['product_thumb_image'];  
}else { 
    $row_array['image'] = 'noimage.gif';  
} 
    array_push($return_arr, $row_array); 
} 
mysql_close($conn); 
echo json_encode($return_arr); 

不幸的是我还需要获得category_id这是不是在同一个table,我试图修改我的query因为如此,但无济于事:

$fetch = mysql_query("SELECT * FROM crd_jshopping_products WHERE `name_en-GB` REGEXP '^$param' AND `crd_jshopping_products_to_categories` = `product_id` "); 

我错过了哪一步这里 ? product_id's匹配tables

回答

1

尝试此查询,而不是尝试去理解什么,我已经写在上面:

$fetch = mysql_query(" 
    SELECT 
     p.*, 
     c.category_id 
    FROM 
     crd_jshopping_products as p 
     INNER JOIN crd_jshopping_products_to_categories as c 
      ON p.product_id = c.product_id 
    WHERE 
     `p.name_en-GB` REGEXP '^$param' 
"); 

这意味着:

SELECT: 给我的一切,从p和CATEGORY_ID从c

FROM: 从表crd_jshopping_products行(称为p)和crd_jshopping_products_to_categories(称为C),其中的行上p的计数 .product_id为符合执行此与c .product_id相同。

WHERE: 只有回到这里p .name_en-GB REGEXP '^ $ PARAM' 的行。

+0

谢谢nl-x - 对于查询和深入解释,我都需要一段时间!我会立即测试它! – user2265402

+0

因为连字符,我不得不在name_en-GB周围添加“'”到p.name_en-GB,只为其他可能尝试此操作的人或类似人员。 谢谢你nl-x它是现货,现在我对未来的查询有很大的参考价值! – user2265402

相关问题