Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations SkipVought on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

complicated query with subqueries

Status
Not open for further replies.

nego78

Programmer
Jun 13, 2004
129
0
0
PL
How can i modify this query to make it work ?

Code:
SELECT 
a.Zamowienia_Id
,DAYOFMONTH(a.Zamowienia_DataZamowienia)
,b.Uzytkownicy_Imie
,b.Uzytkownicy_Nazwisko
,c.SposobZaplaty_Nazwa
,d.RodzajPrzesylki_Nazwa
,a.Zamowienia_DataZamowienia
,a.Zamowienia_DataRealizacji
,IFNULL(a.Zamowienia_UwagiKlienta,'b.d.')
,IFNULL(a.Zamowienia_UwagiNasze,'b.d.')
,a.Zamowienia_StatusRealizacji
,a.Zamowienia_Zaplacono,a.Zamowienia_Prezent
,a.Zamowienia_KosztPrzesylki
,SUM(IF(g.Promocje_Cena,g.Promocje_Cena,f.ProduktyCeny_CenaSprzedazy)*e.ZamowieniaDoProduktow_Ilosc) AS SumaZamowienia
FROM md_sklep_Zamowienia AS a
LEFT JOIN Uzytkownicy AS b ON b.Uzytkownicy_Id=a.Uzytkownicy_Id 
LEFT JOIN md_sklep_SposobZaplaty AS c ON c.SposobZaplaty_Id=a.SposobZaplaty_Id 
LEFT JOIN md_sklep_RodzajPrzesylki AS d ON d.RodzajPrzesylki_Id=a.RodzajPrzesylki_Id 
LEFT JOIN md_sklep_ZamowieniaDoProduktow AS e ON e.Zamowienia_Id=a.Zamowienia_Id
LEFT JOIN (SELECT * FROM md_sklep_ProduktyCeny AS m WHERE ProduktyCeny_DataZmiany=(SELECT MAX(ProduktyCeny_DataZmiany) FROM md_sklep_ProduktyCeny AS n WHERE m.Produkty_Id=n.Produkty_Id AND n.ProduktyCeny_DataZmiany <= a.Zamowienia_DataZamowienia)) AS f ON e.Produkty_Id=f.Produkty_Id
LEFT JOIN md_sklep_Promocje AS g ON (g.Produkty_Id=e.Produkty_Id AND g.Promocje_OdKiedy <= a.Zamowienia_DataZamowienia AND Promocje_DoKiedy >= a.Zamowienia_DataZamowienia) 
GROUP BY a.Zamowienia_Id 
ORDER BY a.Zamowienia_DataZamowienia DESC 
LIMIT 0, 100

In this version it works but it returns bad sum
Code:
SELECT 
a.Zamowienia_Id
,DAYOFMONTH(a.Zamowienia_DataZamowienia)
,b.Uzytkownicy_Imie
,b.Uzytkownicy_Nazwisko
,c.SposobZaplaty_Nazwa
,d.RodzajPrzesylki_Nazwa
,a.Zamowienia_DataZamowienia
,a.Zamowienia_DataRealizacji
,IFNULL(a.Zamowienia_UwagiKlienta,'b.d.')
,IFNULL(a.Zamowienia_UwagiNasze,'b.d.')
,a.Zamowienia_StatusRealizacji
,a.Zamowienia_Zaplacono,a.Zamowienia_Prezent
,a.Zamowienia_KosztPrzesylki
,SUM(IF(g.Promocje_Cena,g.Promocje_Cena,f.ProduktyCeny_CenaSprzedazy)*e.ZamowieniaDoProduktow_Ilosc) AS SumaZamowienia
FROM md_sklep_Zamowienia AS a
LEFT JOIN Uzytkownicy AS b ON b.Uzytkownicy_Id=a.Uzytkownicy_Id 
LEFT JOIN md_sklep_SposobZaplaty AS c ON c.SposobZaplaty_Id=a.SposobZaplaty_Id 
LEFT JOIN md_sklep_RodzajPrzesylki AS d ON d.RodzajPrzesylki_Id=a.RodzajPrzesylki_Id 
LEFT JOIN md_sklep_ZamowieniaDoProduktow AS e ON e.Zamowienia_Id=a.Zamowienia_Id
LEFT JOIN (SELECT * FROM md_sklep_ProduktyCeny AS m WHERE ProduktyCeny_DataZmiany=(SELECT MAX(ProduktyCeny_DataZmiany) FROM md_sklep_ProduktyCeny AS n WHERE m.Produkty_Id=n.Produkty_Id)) AS f ON e.Produkty_Id=f.Produkty_Id
LEFT JOIN md_sklep_Promocje AS g ON (g.Produkty_Id=e.Produkty_Id AND g.Promocje_OdKiedy <= a.Zamowienia_DataZamowienia AND Promocje_DoKiedy >= a.Zamowienia_DataZamowienia) 
GROUP BY a.Zamowienia_Id 
ORDER BY a.Zamowienia_DataZamowienia DESC 
LIMIT 0, 100

Structure:

Code:
CREATE TABLE `md_sklep_Zamowienia` (
  `Zamowienia_Id` int(10) unsigned NOT NULL auto_increment,
  `Uzytkownicy_Id` int(10) unsigned NOT NULL default '0',
  `SposobZaplaty_Id` smallint(5) unsigned NOT NULL default '1',
  `RodzajPrzesylki_Id` smallint(5) unsigned NOT NULL default '1',
  `Zamowienia_DataZamowienia` datetime NOT NULL default '0000-00-00 00:00:00',
  `Zamowienia_DataRealizacji` datetime default NULL,
  `Zamowienia_UwagiKlienta` text character set utf8,
  `Zamowienia_UwagiNasze` text character set utf8,
  `Zamowienia_StatusRealizacji` tinyint(3) unsigned NOT NULL default '0',
  `Zamowienia_Zaplacono` enum('n','t') collate utf8_polish_ci NOT NULL default 'n',
  `AdresyKlientow_Id` int(10) unsigned default NULL,
  `Zamowienia_Prezent` enum('n','t') collate utf8_polish_ci NOT NULL default 'n',
  `Zamowienia_Dedykacja` text collate utf8_polish_ci,
  `Zamowienia_KosztPrzesylki` float(10,2) default NULL,
  PRIMARY KEY  (`Zamowienia_Id`),
  KEY `IX_Uzytkownicy` (`Uzytkownicy_Id`),
  KEY `IX_DataZamowienia` (`Zamowienia_DataZamowienia`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;


CREATE TABLE `md_sklep_ZamowieniaDoProduktow` (
  `Zamowienia_Id` int(10) unsigned NOT NULL default '1',
  `Produkty_Id` int(10) unsigned NOT NULL default '1',
  `ZamowieniaDoProduktow_Ilosc` mediumint(8) unsigned NOT NULL default '1',
  PRIMARY KEY  (`Zamowienia_Id`,`Produkty_Id`),
  KEY `IX_Produkty` (`Produkty_Id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;


CREATE TABLE `md_sklep_ProduktyCeny` (
  `Produkty_Id` int(10) unsigned NOT NULL default '0',
  `ProduktyCeny_DataZmiany` datetime NOT NULL default '0000-00-00 00:00:00',
  `ProduktyCeny_CenaZakupu` float(12,4) unsigned default NULL,
  `ProduktyCeny_CenaSprzedazy` float(10,2) unsigned NOT NULL default '0.00',
  PRIMARY KEY  (`Produkty_Id`,`ProduktyCeny_DataZmiany`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;

Via-Net - web directory
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top