Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> dodatkowa kolumna lp
mihmih
post 5.02.2016, 13:15:53
Post #1





Grupa: Zarejestrowani
Postów: 125
Pomógł: 1
Dołączył: 4.06.2015

Ostrzeżenie: (0%)
-----


witam,

mam kwerendę, w której chciałbym mieć dodatkową kolumnę porządkową LP. Znalazłem w necie takie cos jak rownum, ale nie wiem co zrobić żeby ta kolumna na sztywno zaczynała mi się od jedynki i szła w dół. Teraz mam kolejność przypadkową, a z ORDER BY też przypadkową, ale już inną. Poniżej moje zapytanie:




  1. SELECT
  2.  
  3. @rownum:=@rownum+1 AS `lp`,
  4.  
  5.  
  6.  
  7. AVG( REPLACE( ROUND( ( `oceny`.`ID_kryt1` * `waga1` + `oceny`.`ID_kryt2` * `waga2` + `oceny`.`ID_kryt3` * `waga3` + `oceny`.`ID_kryt4` * `waga4` ) / ( `waga1` + `waga2` + `waga3` + `waga4` ), 2 ), '.', ',' ) ) AS `srednia`, `zamawiajacy`.`ID_zamawiajacego`, `zamawiajacy`.`nazwa_firmy`, AVG( `oceny`.`ID_kryt1` ), AVG( `oceny`.`ID_kryt2` ), AVG( `oceny`.`ID_kryt3` ), AVG( `oceny`.`ID_kryt4` ) FROM { oj `firma`.`oceny` AS `oceny` RIGHT OUTER JOIN `firma`.`zakupy` AS `zakupy` ON `oceny`.`ID_zakup` = `zakupy`.`ID_zakupu` }, `firma`.`zamawiajacy` AS `zamawiajacy`, `firma`.`wagi_ocen` AS `wagi_ocen`, (SELECT @rownum:=0) r WHERE `zakupy`.`ID_sprzedajacego` = `zamawiajacy`.`ID_zamawiajacego` GROUP BY `zamawiajacy`.`ID_zamawiajacego` ORDER BY `srednia`



Co należy zmienić aby pierwszy wiersz już po ORDER BY miał "jedynkę", drugi "dwójkę" itd?
Go to the top of the page
+Quote Post
nospor
post 5.02.2016, 13:20:23
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




http://nospor.pl/mysql-faq.html#faq-6


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mihmih
post 5.02.2016, 13:39:06
Post #3





Grupa: Zarejestrowani
Postów: 125
Pomógł: 1
Dołączył: 4.06.2015

Ostrzeżenie: (0%)
-----


dodanie wiersza:

  1. SET @rownum=0;


na początku nie pomaga, wyskakuje błąd. Chyba że coś źle zrozumiałem z poradnika z linka...
Go to the top of the page
+Quote Post
nospor
post 5.02.2016, 14:00:38
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




SET @rownum=0;
to ma byc jako oddzielne zapytanie a nie wkladasz to do tego samego zapytania


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mihmih
post 5.02.2016, 14:11:13
Post #5





Grupa: Zarejestrowani
Postów: 125
Pomógł: 1
Dołączył: 4.06.2015

Ostrzeżenie: (0%)
-----


ok, zrobiłem tak, ale dalej kolejność mam przypadkową: 5,2,7,8,1,.......
Go to the top of the page
+Quote Post
nospor
post 5.02.2016, 14:14:10
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




pokaz caly kod pozmianach


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mihmih
post 5.02.2016, 14:25:30
Post #7





Grupa: Zarejestrowani
Postów: 125
Pomógł: 1
Dołączył: 4.06.2015

Ostrzeżenie: (0%)
-----


ja niestety bawię się w Libreoffice Base więc żadnego kodu pokazać nie mogę. Ale jest tam bezpośrednie wpisywanie komend do MySqla i kwerendy bezpośrednio robione w MySqlu i kwerenda z mojego pierwszego postu, po wpisanym poleceniu SET.... daje przypadkową kolejność kolumny LP
Go to the top of the page
+Quote Post
nospor
post 5.02.2016, 14:43:13
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Nie mam za duzo czasu na analize, ale czy ty przypadkiem tutaj:
SELECT @rownum:=0 + group
nie psujesz tego i owego? Czemu nagle zerujesz te zmienna?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mihmih
post 5.02.2016, 14:58:07
Post #9





Grupa: Zarejestrowani
Postów: 125
Pomógł: 1
Dołączył: 4.06.2015

Ostrzeżenie: (0%)
-----


no rzeczywiście, część z GROUP BY dałem do podzapytania i chyba wszystko teraz gra:





  1. SELECT
  2.  
  3. @rownum:=@rownum+1 AS `lp`, `srednia`, `ID_zamawiajacego`, `nazwa_firmy`, sr_kryt4, sr_kryt1, sr_kryt2, sr_kryt3 FROM (
  4.  
  5.  
  6.  
  7. SELECT AVG( REPLACE( ROUND( ( `oceny`.`ID_kryt1` * `waga1` + `oceny`.`ID_kryt2` * `waga2` + `oceny`.`ID_kryt3` * `waga3` + `oceny`.`ID_kryt4` * `waga4` ) / ( `waga1` + `waga2` + `waga3` + `waga4` ), 2 ), '.', ',' ) ) AS `srednia`, `zamawiajacy`.`ID_zamawiajacego`, `zamawiajacy`.`nazwa_firmy`, AVG( `oceny`.`ID_kryt1` ) AS sr_kryt1, AVG( `oceny`.`ID_kryt2` ) AS sr_kryt2, AVG( `oceny`.`ID_kryt3` ) AS sr_kryt3, AVG( `oceny`.`ID_kryt4` ) AS sr_kryt4 FROM { oj `firma`.`oceny` AS `oceny` RIGHT OUTER JOIN `firma`.`zakupy` AS `zakupy` ON `oceny`.`ID_zakup` = `zakupy`.`ID_zakupu` }, `firma`.`zamawiajacy` AS `zamawiajacy`, `firma`.`wagi_ocen` AS `wagi_ocen`, (SELECT @rownum:=0) r WHERE `zakupy`.`ID_sprzedajacego` = `zamawiajacy`.`ID_zamawiajacego` GROUP BY `zamawiajacy`.`ID_zamawiajacego`) AS tabela

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.06.2025 - 07:43