2017-02-21 92 views
0

我有以下两条语句,只希望在一条语句中得到它。那可能吗?MYSQL LIKE IN /匹配子字符串

说明一,从过去的2天变得内容:

SELECT 
    c.ID SUBTAG 
FROM 
    `content` c, 
    posts p 
WHERE 
    c.id = p.id_content AND 
    from_unixtime(p.scheduled) BETWEEN TIMESTAMPADD(DAY,-2,now()) AND from_unixtime(UNIX_TIMESTAMP(NOW())) 
ORDER BY from_unixtime(p.scheduled) 

随着c.id我需要从订单金额(数量)。像这样:

SELECT 
    sum(Qty) Bestellungen, 
    SUBTAG 
FROM 
    Orders 
WHERE SubTag Like '%c.id%' 
GROUP BY SubTag 

在表格命令中,Column Subtag并不完全具有c.id.它只是列的一部分。这就是为什么我需要类似的东西! Table Orders中的子标签看起来像132_ 子标签 _kjsdf4382。

订单表的样子:

Date_   Price Qty  SubTag 
2017-02-20  14.98 1  b1a8cc_2_qgsGairwtape 
2017-02-20  14.98 1  b1a8cc_3_qgdfgdirwtape 

的帖子是这样的:

ID  id_content  scheduled   ad_active posted 
3015 82    1487754540   0   1 

和内容是这样的:

从查询
ascsubid ID    
b1a8cc  82 

结果应该是这样的:

SubTag Orders 
b1a8cc  2 
+0

样本数据和预期的结果将有助于解释你想要做什么。 –

+0

好主意。我更新了这个问题 – swapfile

回答

0

我认为你正在寻找以下声明。

SELECT 
    sum(Qty) Bestellungen, 
    SUBTAG 
FROM 
    Orders 
WHERE SubTag Like '%' + c.id + '%'; 
GROUP BY SubTag 
+0

'只想在一个语句中得到这个问题'我不认为这是问题的答案,您仍然使用两个不同的SQL语句。 –

1

是这样的吗?

SELECT 
    sum(Qty) Bestellungen, 
    SUBTAG 
FROM 
    Orders 
WHERE SubTag in 
    (SELECT c.ID 
    FROM `content` c, posts p 
    WHERE c.id = p.id_content AND 
    from_unixtime(p.scheduled) BETWEEN TIMESTAMPADD(DAY,-2,now()) AND 
    from_unixtime(UNIX_TIMESTAMP(NOW())) 
    and c.id Like '%c.id%') 
GROUP BY SubTag; 
0

你可以尝试

SELECT 
    SUM(Qty) Bestellungen, 
    SubTag 
FROM 
    Orders 
WHERE EXIST 
    (SELECT c.ID 
    FROM `content` c, posts p 
    WHERE c.id = p.id_content 
      AND from_unixtime(p.scheduled) BETWEEN TIMESTAMPADD(DAY,-2,now()) AND from_unixtime(UNIX_TIMESTAMP(NOW())) 
      AND Orders.SubTag LIKE CONCAT('%', c.ID, '%')) 
GROUP BY SubTag; 

OR

SELECT 
    SUM(Orders.Qty) Bestellungen, 
    Orders.SubTag 
FROM 
    (SELECT 
     c.ID SUBTAG 
    FROM 
     `content` c, 
     posts p 
    WHERE 
     c.id = p.id_content AND 
     from_unixtime(p.scheduled) BETWEEN TIMESTAMPADD(DAY,-2,now()) AND from_unixtime(UNIX_TIMESTAMP(NOW())) 
    ORDER BY from_unixtime(p.scheduled) 
    ) Tag INNER JOIN Orders ON Orders.SubTag LIKE CONCAT('%', Tag.SubTag, '%') 
GROUP BY 
    Orders.SubTag