PHP MYSQL表比较

时间:2016-06-27 20:11:08

标签: php mysql sql database

我的数据库中有两个表,我试图比较两个数据库的电话价格。手机型号相同,但拼写不同(正如您在table1(型号)和table2(型号)上看到的那样)。实际上我想检查table2是否有更便宜的型号作为table1并输出为MODEL,PRICE1,PRICE2。

TABLE1
id  date        manufac     model           price
1   2016-06-26  SAMSUNG     A3 A300F BLACK  187
2   2016-06-26  SAMSUNG     A5 A500H BLACK  239
3   2016-06-26  SAMSUNG     J5 J300F GOLD   185


TABLE2
id  date        manufac     model           price
1   2016-06-26  SAMSUNG     A300F A3        180
2   2016-06-26  SAMSUNG     A500H A5        232
3   2016-06-26  SAMSUNG     J300F J5 GOLD   172

我尝试使用以下查询但没有成功:

SELECT table1.model AS "MODEL",
       table1.price AS "PRICE TABLE1",
       table2.price AS "PRICE TABLE2" 
FROM   table1, table2 
WHERE  table1.model LIKE CONCAT('%', table2.model, '%');

你们有没有想法如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

无法编写始终有效的查询。问题在于'模型'在单个字符串类型字段中保存两个或三个不同的值。

这样做的正确方法是拥有" model"," color",以及可能" sub_model"领域。当您想要在模型之间进行比较时,您将执行严格的相等表达式:

SELECT table1.model AS "MODEL",table1.price AS "PRICE TABLE1",table2.price AS "PRICE TABLE2" FROM table1,table2 WHERE table1.model = table2.model

使用现在看起来像这样的表:

TABLE1
id  date        manufac     model     color      price
1   2016-06-26  SAMSUNG     A300F     BLACK      187
2   2016-06-26  SAMSUNG     A500H     BLACK      239
3   2016-06-26  SAMSUNG     J300F     GOLD       185


TABLE2
id  date        manufac     model     color      price
1   2016-06-26  SAMSUNG     A300F                180
2   2016-06-26  SAMSUNG     A500H                232
3   2016-06-26  SAMSUNG     J300F     GOLD       172

您必须执行数据清理以将这些字段分隔为新字段,然后确保它们在所有新行上也是分开的。