选择两行具有相同列值的位置并回显它们

时间:2012-12-27 02:19:53

标签: php mysql

在表“ogitems”中,我有一个名为“itemname”,“month”和“price”的列。

有重复的项目,按月排列。

我想检查“itemname”以查看是否有任何行具有相同的itemname值,如果是,则回显“itemname”以及最近两个月以及这两个月的定价。

实施例

“itemname”= CHEESE CHEDDAR

CHEESE CHEDDAR在第11个月和第12个月被发现(因此CHEESE CHEDDAR有两个记录/行)。 11的“价格”为51,而12的“价格”为54

我希望将这些信息反映到锚标记......

<a href="pricetrend.php?date=<?php echo "" . $row['month'] . "" ?>&price1=<?php echo $price1; ?>&price2=<?php echo $price2; ?>&item=<?php echo "" . $row['itemname'] . ""?>;">

基本上,我试图获取一个项目的两个最新价格并将它们回显到此锚标记中。在此先感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

select * from ogitems where itemname='CHEESE CHEDDAR' order by month desc limit 2

这个sql语句应该解决你的问题

<?php 
  $result = mysql_query("select * from ogitems where itemname='CHEESE CHEDDAR' order by month desc limit 2")
  while ($row = mysql_fetch_assoc($result)) {
    echo $row["itemname"];
    echo $row["month"];
    echo $row["price"];
   }
?>

答案 1 :(得分:0)

我假设你的月份是date field,这应该可行

SQL小提琴链接: http://sqlfiddle.com/#!2/d63a0/4

SELECT * FROM (
                 SELECT
                        o.itemname,
                        o.month,
                        ( SELECT price FROM ogitems i WHERE i.itemname = o.itemname AND i.month<o.month ORDER BY MONTH DESC LIMIT 1) AS last_month_price,
                        o.price AS current_month_price
                FROM
                    ogitems o
                ORDER BY
                    o.month DESC

              ) AS items
GROUP BY
  items.itemname
HAVING
  items.last_month_price IS NOT NULL