2016-03-30 13 views
-4

どうすればいいですか?これはグループ化と行の違い? php mysql

╔════════╦══════════╦════════════════════════╗ 
║ ITEM ║ PRICE ║ DATE  ║ Differnece ║ 
╠════════╬══════════╬════════════════════════╣ 
║ Dollar ║  50 ║ 2.3.2016 ║ -10  ║ 
║ Bound ║  110 ║ 2.3.2016 ║ 10  ║ 
║ Euro ║  580 ║ 3.3.2016 ║ -20  ║ 
╚════════╩══════════╩════════════════════════╝ 

これは私がやったことあるように私は、

╔════════╦══════════╦══════════╗ 
║ ITEM ║ PRICE ║ DATE  ║ 
╠════════╬══════════╬══════════╣ 
║ Dollar ║  60 ║ 1.3.2016 ║ 
║ Dollar ║  50 ║ 2.3.2016 ║ 
║ Bound ║  100 ║ 1.3.2016 ║ 
║ Bound ║  110 ║ 2.3.2016 ║ 
║ Euro ║  600 ║ 1.3.2016 ║ 
║ Euro ║  580 ║ 3.3.2016 ║ 
╚════════╩══════════╩══════════╝ 

出力は最後の日付と前の行からの価格差の最後の価格dedepndingと、各タイプから一つの項目が表示される必要があり、このテーブルを持っているが、それはありますエラー投げること

SELECT a.item, a.price, a.date, a.price - b.price AS difference 
FROM (SELECT t1.item, t1.price, t1.date 
     FROM yourTable AS t1 
     JOIN (SELECT item, MAX(date) AS maxdate 
      FROM yourTable 
      GROUP BY item) AS t2 
     ON t1.item = t2.item, t1.date = t2.maxdate) AS a 
JOIN (SELECT t1.item, t1.price, t1.date 
     FROM yourTable AS t1 
     JOIN (SELECT item, MIN(date) AS mindate 
      FROM yourTable 
      GROUP BY item) AS t2 
     ON t1.item = t2.item, t1.date = t2.mindate) AS b 

これはエラー

です

1064 - SQL構文に誤りがあります。サブクエリを書くライン7

+0

あなたは何を試したことがありますか?私達にあなたのコードを表示してください。 – arman1991

+0

本当に、私はないですありません実際にプログラマー – gaidi

+2

あなたは本当のプログラマーを雇う必要があるように聞こえます。あなたが質問を書く必要があるたびにここに来て、それをすることは期待できません。 – Barmar

答えて

0

で「SELECT(JOINのt1.item_type、t1.purchasing_price、t1.date_price AS .maxdate」)近くを使用する権利構文についてはMySQLサーバのバージョンに対応するマニュアルを確認してください各項目の最初の行を取得し、別のサブクエリ、各項目の最後の行を取得し、それらに参加し、減算するために。

SELECT a.item, a.price, a.date, a.price - b.price AS difference 
FROM (SELECT t1.item, t1.price, t1.date 
     FROM yourTable AS t1 
     JOIN (SELECT item, MAX(date) AS maxdate 
      FROM yourTable 
      GROUP BY item) AS t2 
     ON t1.item = t2.item, t1.date = t2.maxdate) AS a 
JOIN (SELECT t1.item, t1.price, t1.date 
     FROM yourTable AS t1 
     JOIN (SELECT item, MIN(date) AS mindate 
      FROM yourTable 
      GROUP BY item) AS t2 
     ON t1.item = t2.item, t1.date = t2.mindate) AS b 
+0

このエラーが発生します #1064 - SQL構文にエラーがあります。あなたのMySQLサーバのバージョンに対応するマニュアルをチェックし、正しい構文を確認してください。 '.maxdate as a JOIN(SELECT t1.item_type、t1.purchasing_price、t1.date_price' 7行目) – gaidi

+0

')' 't2.maxdate'の後に。 – Barmar

+0

私は今それを行う必要があります、私はどのようにプログラマーを雇うことができますか? – gaidi

関連する問題