SQL选择字段设置为显示的类别

时间:2015-04-04 12:41:15

标签: php mysql

我正在尝试选择类别(仅限类别),其中fiels(位于单独的表中)的show值设置为1.

我设法用INNER JOIN制作它,但问题是,这将获得所有内容(甚至是字段本身),所以当我尝试使用while和print类别时,它会打印一个类别多次,因为很多字段是那里。

$get_cats = dbquery("SELECT A.field_cat_name, A.field_cat_id FROM ".DB_USER_FIELD_CATS." A INNER JOIN ".DB_USER_FIELDS." B ON A.field_cat_id=B.field_cat WHERE B.field_show!='0' ORDER BY field_cat_order");

while ($cat = dbarray($get_cats)){
    echo "<div class='tester' id='cat-".$cat['field_cat_id']."'><span>".$cat['field_cat_name']."</span></div>";
}

返回

CONTACT INFORMATION
CONTACT INFORMATION
CONTACT INFORMATION
CONTACT INFORMATION
CONTACT INFORMATION
CONTACT INFORMATION
CONTACT INFORMATION
MISCELLANEOUS INFORMATION
MISCELLANEOUS INFORMATION
STATISTICS
STATISTICS
STATISTICS

一些想法?我试过谷歌搜索,但不知道告诉谷歌搜索什么,所以它会告诉我相关的结果。

TL; DR

我需要获得所有具有显示值设置为1的字段的类别。类别和字段位于单独的表中。

感谢。

3 个答案:

答案 0 :(得分:1)

使用$ get_cats = dbquery(&#34; SELECT DISTINCT A.field_cat_name,....

答案 1 :(得分:1)

尝试使用distinct。

SELECT DISTINCT
A.field_cat_name,
A.field_cat_id
FROM ".DB_USER_FIELD_CATS." A
INNER JOIN ".DB_USER_FIELDS." B
ON A.field_cat_id=B.field_cat
WHERE B.field_show!='0'
ORDER BY field_cat_order

答案 2 :(得分:1)

您可以像这样使用DISTINCT

$get_cats = dbquery("SELECT DISTINCT A.field_cat_name, A.field_cat_id 
                     FROM ".DB_USER_FIELD_CATS." A 
                       INNER JOIN ".DB_USER_FIELDS." B 
                     ON A.field_cat_id=B.field_cat 
                     WHERE B.field_show!='0' 
                     ORDER BY field_cat_order");