Mysql SELECT查询返回double值

时间:2017-08-10 09:29:45

标签: php mysql

我遇到SELECT查询问题,而不是给我一个单独的值,给了我太多。 查询如下:

            SELECT costi.id, costo, descrizione, categoria
            FROM costi 
            INNER JOIN categorie 
            WHERE costi.id = 140

查询从具有两个表(costi和categorie)的DB中捕获数据 db structure

我遇到的问题是: 例如,如果我在PHP上运行查询我的管理员(通过输入而不是$ _POST ['id'],成本的ID,如140)而不是仅返回带有相关数据的一行,它返回两个行(我创建的每个类别一个)。 query result

它们是相同的行,具有相同的值,但不同的类别字段除外。 我需要使用正确的数据返回一行。

6 个答案:

答案 0 :(得分:0)

查看您的查询结果..

您可以使用group_concat在一行中获取结果

   SELECT  costo, descrizione, group_concat(categoria)
        FROM costi 
        INNER JOIN categorie 
        WHERE costi.id = 140
 group by   costo, descrizione

答案 1 :(得分:0)

看起来应该是:

  
SELECT costi.id, costo, descrizione, categoria
FROM costi 
INNER JOIN categorie
    ON costi.id = categorie.id --note the join condition
WHERE costi.id = 140

答案 2 :(得分:0)

您需要使用JOIN语句中的外键

来连接2个表
SELECT costi.id, costo, descrizione, categoria
FROM costi 
    INNER JOIN categorie ON categorie.id = costi.idcatagoria
WHERE costi.id = 140

现在查询知道2个表中哪些行彼此相关

答案 3 :(得分:0)

可以有两种方法:

  1. 使用以下查询来避免INNER JOIN

        SELECT h.id, h.costo, h.descrizione, i.categoria
        FROM costi h, categorie i 
        WHERE h.id = 140 and h.idcategoria=i.id
    
  2. 您可以将GROUP BYINNER JOIN

  3. 一起使用

答案 4 :(得分:0)

使用以下查询避免INNER JOIN:

 SELECT h.id, h.costo, h.descrizione, i.categoria
    FROM costi h, categorie i 
    WHERE h.id = 140 and h.idcategoria=i.id

答案 5 :(得分:-1)

指定连接的任何条件。 喜欢table.id on ...

指定条件然后您将获得有限的结果