0

我想做一个 PDO 请求,该请求将从 2 个不同的表中获取信息,但事情很快变得困难,我解释说:

我有一个像这样组织的第一个数据库表(花)(但它确实比我向您展示的要大):

ID;       name;              price of format 1; price of format 2; name of other format 3; price of other format 3;
FLOW0001; big yellow flower; ;                  15,99;             more big format;        34,99; 
FLOW0002; little red flower; 5,99;              8,99;              ;                       ; 

……就这样继续……

第二个表(树)是这样的:

ID;       name;            name of format;  price of format;
TREE0001; OMG BIG TREE !;  F*** big format; 599,99; 
TREE0001; OMG BIG TREE !;  F*** even bigger format; 899,99; 
TREE0002; litte ugly tree; little format;   20,99; 

……就这样继续……

问题是我想“合并”这两个表,并将它们显示在这样的页面中:

while ($datas =$response->fetch()) //fetching the tables, they will be togheter and ordered by (their biggest) price. So, trees and flowers will blend. 
{
    // then echo the fetched datas. I will need to separate the prices and show them... some if/else based on pregmatches of the ID to know if it's an TREE or FLOW. 
}

如何混合这个?我没有想法。最糟糕的是,我需要做一个页面系统(每页 50 个)。在页面系统和页面中,所有重复的树都需要显示为唯一的树......帮助!

4

1 回答 1

1

您可以使用 aunion从两个表中获取数据。只要确保您在两个查询中都返回匹配的列。因此,如果在您的第​​一个查询中您有以下数据类型int, text, varchar, decimal, decimal,您将需要确保第二个查询获得相同的列类型,否则数据库将对它有一个 hissyfit。您可以在末尾使用 order by 子句对来自两个查询的数据进行很好的排序。

这样的事情应该可以解决问题:

select
    ID,
    name,
    price
from
    flowers
where
    // your clauses
union   
select
    ID,
    name,
    price
from
    trees
where
    // your clauses
order by 3 desc

编辑:group_concat()如果需要,您可以在其中输入字段,是的,您可以explode()在 PHP 中对它们进行操作。默认的 group_concat 分隔符是 ,(逗号),因此如果您的字段中有逗号,您需要将其更改为某些内容,以便您的分解工作正常。

于 2012-07-31T23:11:50.660 回答