php获取mysql查询行
我从我的php类2不同的方法中检索了2个mysql查询,它们如下所示php获取mysql查询行,php,mysql,Php,Mysql,我从我的php类2不同的方法中检索了2个mysql查询,它们如下所示 SELECT domains.id, domains.name, domains.meta_title, domains.meta_keywords, domains.meta_description, produkt_modul.keywords, produkt_modul.program_id,produkt_modul.title, produkt_modul.items, produkt_modul.searc
SELECT
domains.id, domains.name, domains.meta_title,
domains.meta_keywords, domains.meta_description,
produkt_modul.keywords, produkt_modul.program_id,produkt_modul.title, produkt_modul.items, produkt_modul.search_type
FROM domains
JOIN produkt_modul ON domains.id = produkt_modul.domains_id WHERE domains.name='$domain_name' ORDER BY position
正在获取我的产品模块的行
第二个呢
SELECT
domains.id, text_module.position, text_module.title, text_module.text
FROM domains
JOIN text_module
ON domains.id = text_module.domains_id
WHERE domains.name='$domain_name' AND active= 1 ORDER BY position
应该给我文本模块的行
当我在视图中生成行的html输出时,我想在positions值之后排序主题
应该是什么样子,例如:
text_modul pos1
prod_modul pos2
prod_modul pos3
text_modul pos4
行的实际视图如下所示
text_modul1
text_modul4
prod_modul2
prod_modul3
如何以这种方式获取行以使主题具有正确的顺序。不清楚
position
列来自何处,但我猜测produkt\u模块
和text\u模块
表都有position
列
要在SQL中实现这一点,可以使用UNION并对组合结果进行排序。限制是联合在一起的两个结果必须具有相同的列数,并且列必须是兼容的类型:
SELECT title, position FROM (
SELECT p.title, p.position
FROM produkt_module p
JOIN domains d ON d.id = p.domains_id
WHERE d.name = '$domain_name'
UNION
SELECT t.title, t.position
FROM text_module t
JOIN domains d ON d.id = t.domains_id
WHERE d.name = '$domain_name'
AND t.active
) ORDER BY position;
您还可以将这两个结果集读入一个数组,并在PHP中对其进行排序。以下是如何在PHP中进行排序。请注意,此代码假定
位置
在produkt_模块
和text_模块
结果中是唯一的
$allrows = array();
$res = mysql_query(/* your first query on produkt_module */);
while ($row = mysql_fetch_assoc($res) {
$row['type'] = 'p';
$allrows[$row['position']] = $row;
}
$res = mysql_query(/* your second query on text_module */);
while ($row = mysql_fetch_assoc($res) {
$row['type'] = 't';
$allrows[$row['position']] = $row;
}
ksort($allrows); // sort all rows by position
foreach ($allrows as $pos => $row) {
if ($row['type'] == 'p') {
/* display a produkt_module row, i.e $row['title'], etc. */
} elseif ($row['type'] == 't') {
/* display a text_module row */
}
}
谢谢,我认为工会不会给我带来结果。不知何故,我必须读取数组中的两个查询结果