2013-06-28 34 views
0

更新后:30.06.2013PHP和MySQL - 排序或分组 - 标识

$phonesRelated = $DB->getRandom(" `".DB_PREFIX."phones` a, `".DB_PREFIX."phones_categories` b ", " a.id ", " AND a.id=b.phone_id AND b.phone_id!='".$phone['id']."' AND b.category_id IN (".implode(",", $arr).") GROUP BY a.id", 3); 
$smarty->assign("phones", $phonesRelated); 

嗨,

  1. ".DB_PREFIX."phones - 代表与具有多个列的手机表(一次是ID )

  2. ".DB_PREFIX."phones_categories - 表示表2列(phone_id [具有从".DB_PREFIX."phones ID相同的数]和CATEGORY_ID [是多少Ò F中的类别])

例如:我们在其上具有ID = 7在表".DB_PREFIX."phonesID柱网页的iPhone3。

我需要的是在ID = 7 - > ID = 8,ID = 9,ID = 10之后使查询返回电话ID。此时,查询通过ID为46,ID = 47,ID = 48的表".DB_PREFIX."phones_categories末尾的ID返回记录。

有人可以帮助我提示什么要添加在代码,使其返回连续的ID?

+2

将'order by'添加到您的sql中,并通过名称而不是ID – Dave

+0

您正在使用任何聚合函数吗? – Strawberry

+0

我不知道你的意思是“聚合函数”(我不太了解PHP和MySQL)。上面的代码工作正常,只有我不能让它连续选择ID(它从表中选择了最新的)。我发现像我的问题在这里:http://stackoverflow.com/questions/11431279/how-can-get-records-after-specific-id-in-mysql,但我不知道把它放在我的代码。 – owner

回答

2

只需添加到您的查询的末尾:你想他们是为了

ORDER BY name DESC //Or whatever serves as name 
0

请在:Iphone5的,iPhone4S的方面,iPhone4 ...或者你不在乎,只要它是每次都一样?

如果第一个是这样,然后做前面的回答表明,如果没有,那么你将需要确保,当你进入行插入表中,你每次做的是,在相同的顺序

+0

我需要每次都一样。手机的版本无关紧要。我希望被淘汰“随机”forver :) – owner

+0

我想如果你做其他建议的答案,你会避免永远随机!这将是为了尽管,但既然你不在乎,那么它应该工作! – bombadil

+0

请在代码中显示我,因为我在“$ sql ...,$ str_category ...和$ sql =”SELECT * FROM ...“的末尾放置了”order by“,但行为相同。需要更改的整个代码行谢谢 – owner