Mysqli - 通过表B的输入订购表A.

时间:2014-01-30 03:18:51

标签: php mysqli

我在页面上放了一个ajax排序按钮。我想以最高价格对住宿对象进行分类,但我有另一张价格表,因为每个单位的日期价格范围不同。 这是我的住宿表

CREATE TABLE IF NOT EXISTS `Accomodation` (
  `SmjestajID` int(11) NOT NULL AUTO_INCREMENT,
  `SmjestajNaziv` varchar(300) COLLATE utf8_unicode_ci NOT NULL,
  `SmjestajTip` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `SmjestajKategorija` varchar(1) COLLATE utf8_unicode_ci NOT NULL,
  `SmjestajAdresa` text COLLATE utf8_unicode_ci NOT NULL
  PRIMARY KEY (`SmjestajID`)
)

这是我的价格表

CREATE TABLE IF NOT EXISTS `Price` (
  `SmjestajCjenikID` int(11) NOT NULL AUTO_INCREMENT,
  `SmjestajCjenikRazdoblje` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `SmjestajCjenikCijena` varchar(10) COLLATE utf8_unicode_ci NOT NULL,
  `SmjestajID` int(10) NOT NULL,
  PRIMARY KEY (`SmjestajCjenikID`)
)

通过这个查询,我可以按最高价格对住宿对象进行分类,但只有插入价格的住宿对象,那些仍然没有插入价格的物品,它们应该放在最后最便宜。

SELECT DISTINCT Accomodation.*, max(CONVERT(Price.SmjestajCjenikCijena,UNSIGNED INTEGER)) 
FROM Accomodation 
INNER JOIN Price ON Accomodation.SmjestajID = Price.SmjestajCjenikSmjestaj 
GROUP BY Price.SmjestajCjenikSmjestaj 
ORDER BY max(CONVERT(Price.SmjestajCjenikCijena,UNSIGNED INTEGER)) DESC

1 个答案:

答案 0 :(得分:0)

您想使用HAVING子句。

SELECT DISTINCT Accomodation.*, max(CONVERT(Price.SmjestajCjenikCijena,UNSIGNED INTEGER)) 
FROM Accomodation 
INNER JOIN Price ON Accomodation.SmjestajID = Price.SmjestajCjenikSmjestaj 
GROUP BY Price.SmjestajCjenikSmjestaj 
ORDER BY max(CONVERT(Price.SmjestajCjenikCijena,UNSIGNED INTEGER)) DESC
HAVING Price.SmjestajCjenikCijena > 0