查询返回一个坏输出
表报价查询返回一个坏输出
id_offer offer state
600 A 0
629 B 0
标签
id_tags tags
561 PHP
562 JAVA
589 MySQL
917 python
offer_has_tags
offer_id_offer tags_id_tags
600 561
600 562
600 917
629 562
629 589
629 917
我需要的输出:
600 PHP
600 JAVA
600 python
629 JAVA
629 MySQL
629 python
我试图(没有成功):
SELECT A.id_offer, A.tags
FROM
(SELECT *
FROM offer
WHERE id_offer IN (600, 629)
AND state = 0
ORDER BY date_post DESC
LIMIT ?, ?
) A, tags A
INNER JOIN offer_has_tags B
ON A.id_tags = B.tags_id_tags
INNER JOIN offer C
ON C.id_offer = B.offer_id_offer
GROUP BY id_tags
任何想法?感谢
试试这个
SELECT A.id_offer, t.tags
from
(Select * from offer o
Where o.id_offer IN (600, 629)
AND o.State=0
ORDER BY ? DESC
Limit ?,?) A
INNER JOIN offer_has_tags B
ON A.id_offer = B.offer_id_offer
INNER JOIN tags t
ON b.tags_id_tags = t.id_tags
使用旧SQL风格的(但更容易理解,我认为):
SELECT id_offer, tags.tags
FROM tags,offer_has_tags,offer
WHERE offer_id_offer = offer.id_offer
AND tags_id_tags = id_tags
AND id_offer IN (600, 629)
AND state = 0
GROUP BY id_offer, tags.tags
ORDER BY date_post DESC
与LIMIT:
SELECT A.id_offer, tags.tags
FROM tags,(SELECT *
FROM offer
WHERE id_offer IN (600, 629)
AND state = 0
ORDER BY date_post DESC
LIMIT ?, ?
) A,offer_has_tags
WHERE offer_id_offer = A.id_offer
AND tags_id_tags = id_tags
GROUP BY A.id_offer, tags.tags
请,我增加了新的细节。我忘记了限制条款。 – user455318 2012-07-22 01:31:11
你能用限制条款说清楚吗?哪种行? – hmmftg 2012-07-22 01:42:35
,限制应该限制报价的数量,而不是标签的数量。例如,“我希望3-5天之间的报价不变”,所以在这种情况下输出应该是没有的,因为我只有两个报价。 – user455318 2012-07-22 01:44:38
嗨,我忘了子查询中的限制条款。现在我记得那是我使用子查询的原因。 – user455318 2012-07-22 01:30:32