Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MYSQL] złożone zapytanie
topcio
post 11.01.2019, 20:16:05
Post #1





Grupa: Zarejestrowani
Postów: 140
Pomógł: 0
Dołączył: 14.01.2017

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


Witajcie
Proszę o pomoc.

Mam tabelę, wygląda mniej więcej tak

ID COL_1 COL_2 COL_3 COL_4
1 TYP_1 NAZWA_1 TEXT_1 DANE_1
2 TYP_1 NAZWA_1 TEXT_2 DANE_2
3 TYP_1 NAZWA_1 TEXT_3 DANE_3
4 TYP_1 NAZWA_1 TEXT_4 DANE_4
5 TYP_2 NAZWA_2 TEXT_1 DANE_5
6 TYP_2 NAZWA_2 TEXT_2 DANE_6
7 TYP_2 NAZWA_2 TEXT_3 DANE_7
8 TYP_2 NAZWA_2 TEXT_4 DANE_8
9 TYP_1 NAZWA_3 TEXT_1 DANE_9
10 TYP_1 NAZWA_3 TEXT_2 DANE_10
11 TYP_1 NAZWA_3 TEXT_3 DANE_11
12 TYP_1 NAZWA_3 TEXT_4 DANE_12
13 TYP_2 NAZWA_4 TEXT_1 DANE_13
14 TYP_2 NAZWA_4 TEXT_2 DANE_14
15 TYP_2 NAZWA_4 TEXT_3 DANE_15
16 TYP_2 NAZWA_4 TEXT_4 DANE_16

Potrzebuję zrobić takie zapytanie z PHP aby:
1. Wybrać np. tylko TYP_1
2. Dla TYP_1 wybrać wszystko z COL_2, COL_3, COL_4
3. Wyświetlić to jako jeden wiersz, aby w efekcie końcowym uzyskać

TYP_1, NAZWA_1, TEXT_1 - DANE_1, TEXT_2 - DANE_2, TEXT_3 - DANE_3, TEXT_4 - DANE_4,
TYP_1, NAZWA_9, TEXT_1 - DANE_9, TEXT_2 - DANE_10, TEXT_3 - DANE_11, TEXT_4 - DANE_12,

Z góry dzięki za pomoc
Go to the top of the page
+Quote Post
trueblue
post 12.01.2019, 16:26:49
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


W wyniku są dwa wiersze. Wygląda tak jakbyś chciał grupować również po COL_2, no ale tego nie piszesz.


--------------------
Go to the top of the page
+Quote Post
topcio
post 12.01.2019, 22:49:35
Post #3





Grupa: Zarejestrowani
Postów: 140
Pomógł: 0
Dołączył: 14.01.2017

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


no dokładnie o to mi chodzi. Nie wiedziałem jak to napisać. Z takim czymś się pierwszy raz spotykam i nie wiem jak to ugryźć
Go to the top of the page
+Quote Post
trueblue
post 12.01.2019, 22:52:15
Post #4





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


I dlatego napisałeś, że oczekujesz jednej linii?

Grupujesz po tych dwóch polach, trzecią wartość uzyskujesz poprzez https://dev.mysql.com/doc/refman/5.7/en/gro...on_group-concat


--------------------
Go to the top of the page
+Quote Post
topcio
post 12.01.2019, 23:04:10
Post #5





Grupa: Zarejestrowani
Postów: 140
Pomógł: 0
Dołączył: 14.01.2017

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


czyli ma to wyglądać mniej więcej tak
  1. SELECT * FROM TABLE WHERE COL_1 = 'TYP_1' GROUP BY COL_2 ORDER BY COL_4 ASC


Ten post edytował topcio 12.01.2019, 23:04:55
Go to the top of the page
+Quote Post
trueblue
post 12.01.2019, 23:32:03
Post #6





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Pokaż jeszcze raz jaki dokładnie wynik chcesz uzyskać.


--------------------
Go to the top of the page
+Quote Post
topcio
post 12.01.2019, 23:50:04
Post #7





Grupa: Zarejestrowani
Postów: 140
Pomógł: 0
Dołączył: 14.01.2017

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


  1. Type Name Grade Player_Level Bonus_Infantry_ATK Bonus_Infantry_DEF Bonus_Infantry_Max_HP Bonus_Ranged_ATK Bonus_Ranged_DEF Bonus_Ranged_Max_HP Bonus_Cavalry_ATK Bonus_Cavalry_DEF Bonus_Cavalry_Max_HP Bonus_Siege_Engine_ATK Bonus_Siege_Engine_DEF Bonus_Siege_Engine_Max_HP Bonus_Trap_ATK Bonus_Trap_DEF Bonus_Trap_Max_HP Bonus_Army_ATK Bonus_Army_DEF Bonus_Army_Max_HP Bonus_Army_Capacity Bonus_Food_Production_Rate Bonus_Stone_Production_Rate Bonus_Timber_Production_Rate Bonus_Ore_Production_Rate Bonus_Gold_Production_Rate Bonus_Construction_Speed Bonus_Research_Speed Bonus_Training_Speed Bonus_Forging_Speed Bonus_Resource_Gathering_Speed Bonus_Travel_Speed Bonus_Merging_Speed_Boost_(Pacts) Bonus_Merging_Speed_Boost_(Skillstones) Bonus_Familiar_Skill_EXP_Boost Bonus_Familiar_Training_Level_EXP_Boost Bonus_Energy_Saver Bonus_Max_Energy Bonus_Monster_Hunt_DMG_Boost Bonus_Monster_Hunt_Starting_MP Bonus_Monster_Hunt_Travel_Speed Bonus_Pack_Attack Bonus_Reduced_Upkeep Bonus_Wall_DEF_Boost Bonus_Player_EXP_Boost Bonus_Enemy_Army_DEF_Debuff Bonus_Enemy_Army_Max_HP_Debuff
  2. Helmet Ancient Hat Common 55 NULL NULL NULL 4.50 4.00 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 2.40 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
  3. Helmet Ancient Hat Uncommon 55 NULL NULL NULL 8.60 7.75 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 4.65 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
  4. Helmet Ancient Hat Rare 55 NULL NULL NULL 13.15 11.75 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 7.00 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
  5. Helmet Ancient Hat Epic 55 NULL NULL NULL 17.85 16.00 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 9.50 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
  6. Helmet Ancient Hat Legendary 55 NULL NULL NULL 28.00 25.00 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 15.00 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
  7. Helmet Ancient Hat Mythic 55 NULL NULL NULL 39.20 35.00 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 21.00 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
  8. Armor Deathly Mantle Common 50 NULL NULL NULL 3.20 NULL NULL NULL NULL NULL NULL NULL NULL 2.40 NULL NULL NULL 2.40 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
  9. Armor Deathly Mantle Uncommon 50 NULL NULL NULL 6.20 NULL NULL NULL NULL NULL NULL NULL NULL 4.65 NULL NULL NULL 4.65 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
  10. Armor Deathly Mantle Rare 50 NULL NULL NULL 9.40 NULL NULL NULL NULL NULL NULL NULL NULL 7.00 NULL NULL NULL 7.00 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
  11. Armor Deathly Mantle Epic 50 NULL NULL NULL 13.00 NULL NULL NULL NULL NULL NULL NULL NULL 9.50 NULL NULL NULL 9.50 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
  12. Armor Deathly Mantle Legendary 50 NULL NULL NULL 20.00 NULL NULL NULL NULL NULL NULL NULL NULL 15.00 NULL NULL NULL 15.00 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
  13. Armor Deathly Mantle Mythic 50 NULL NULL NULL 28.00 NULL NULL NULL NULL NULL NULL NULL NULL 21.00 NULL NULL NULL 21.00 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
  14. Legs Nether Walkers Common 45 NULL NULL NULL 2.40 1.50 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 2.40 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
  15. Legs Nether Walkers Uncommon 45 NULL NULL NULL 4.65 2.50 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 4.65 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
  16. Legs Nether Walkers Rare 45 NULL NULL NULL 7.00 4.00 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 7.00 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
  17. Legs Nether Walkers Epic 45 NULL NULL NULL 9.50 6.00 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 9.50 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
  18. Legs Nether Walkers Legendary 45 NULL NULL NULL 15.00 10.00 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 15.00 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
  19. Legs Nether Walkers Mythic 45 NULL NULL NULL 21.00 14.00 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 21.00 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
  20. Main Hand Harbinger Common 40 NULL NULL NULL 1.20 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1.50 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
  21. Main Hand Harbinger Uncommon 40 NULL NULL NULL 2.40 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 2.50 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
  22. Main Hand Harbinger Rare 40 NULL NULL NULL 3.65 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 4.00 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
  23. Main Hand Harbinger Epic 40 NULL NULL NULL 5.00 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 6.00 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
  24. Main Hand Harbinger Legendary 40 NULL NULL NULL 8.00 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 10.00 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
  25. Main Hand Harbinger Mythic 40 NULL NULL NULL 11.20 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 14.00 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
  26.  
  27.  
  28.  



Tak wygląda tabela pierwsze kilka wierszy
Potrzebuję wyciągnąć wszystkie dane co są
Type = Helmet
W chwili obecnej dla każdego jednego Typu mam 6 wyników, a potrzebuję je mieć w połączone jako jeden wynik, by łatwo manipulować danymi na stronie.
Do teraz robiłem tak
  1. SELECT * FROM Equipment WHERE Type = 'Helmet' AND Grade = 'Legendary' ORDER BY Name ASC

ale potrzebuje mieć dostęp do wszystkich Grade w jednym zapytaniu

Ten post edytował topcio 12.01.2019, 23:54:19
Go to the top of the page
+Quote Post
trueblue
post 13.01.2019, 08:17:48
Post #8





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Do wszystkich danych (jakich?), czy do wszystkich Grade (które dla Helmet są takie same)?


--------------------
Go to the top of the page
+Quote Post
topcio
post 14.01.2019, 04:11:49
Post #9





Grupa: Zarejestrowani
Postów: 140
Pomógł: 0
Dołączył: 14.01.2017

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


do wszystkich bonusów, które dla każdego grade są inne
np mieć tak
[Common]_Bonus% [Uncommon]_Bonus% [Rare]_Bonus%


chyba po prost zrorganizuję tabelę

pomęczyłem trochę i doszedłem co i jak smile.gif
I powiem Ci, że jestem z siebie dumny
  1. SELECT * FROM (
  2. SELECT Name, Type, Player_Level,
  3. GROUP_CONCAT(Bonus_Army_ATK SEPARATOR ';') AS Bonus_Army_ATK,
  4. GROUP_CONCAT(Bonus_Army_Capacity SEPARATOR ';') AS Bonus_Army_Capacity,
  5. GROUP_CONCAT(Bonus_Army_DEF SEPARATOR ';') AS Bonus_Army_DEF,
  6. GROUP_CONCAT(Bonus_Army_Max_HP SEPARATOR ';') AS Bonus_Army_Max_HP,
  7. GROUP_CONCAT(Bonus_Cavalry_ATK SEPARATOR ';') AS Bonus_Cavalry_ATK,
  8. GROUP_CONCAT(Bonus_Cavalry_DEF SEPARATOR ';') AS Bonus_Cavalry_DEF,
  9. GROUP_CONCAT(Bonus_Cavalry_Max_HP SEPARATOR ';') AS Bonus_Cavalry_Max_HP,
  10. GROUP_CONCAT(Bonus_Construction_Speed SEPARATOR ';') AS Bonus_Construction_Speed,
  11. GROUP_CONCAT(Bonus_Enemy_Army_DEF_Debuff SEPARATOR ';') AS Bonus_Enemy_Army_DEF_Debuff,
  12. GROUP_CONCAT(Bonus_Enemy_Army_Max_HP_Debuff SEPARATOR ';') AS Bonus_Enemy_Army_Max_HP_Debuff,
  13. GROUP_CONCAT(Bonus_Energy_Saver SEPARATOR ';') AS Bonus_Energy_Saver,
  14. GROUP_CONCAT(Bonus_Familiar_Skill_EXP_Boost SEPARATOR ';') AS Bonus_Familiar_Skill_EXP_Boost,
  15. GROUP_CONCAT(Bonus_Familiar_Training_Level_EXP_Boost SEPARATOR ';') AS Bonus_Familiar_Training_Level_EXP_Boost,
  16. GROUP_CONCAT(Bonus_Food_Production_Rate SEPARATOR ';') AS Bonus_Food_Production_Rate,
  17. GROUP_CONCAT(Bonus_Forging_Speed SEPARATOR ';') AS Bonus_Forging_Speed,
  18. GROUP_CONCAT(Bonus_Gold_Production_Rate SEPARATOR ';') AS Bonus_Gold_Production_Rate,
  19. GROUP_CONCAT(Bonus_Infantry_ATK SEPARATOR ';') AS Bonus_Infantry_ATK,
  20. GROUP_CONCAT(Bonus_Infantry_DEF SEPARATOR ';') AS Bonus_Infantry_DEF,
  21. GROUP_CONCAT(Bonus_Infantry_Max_HP SEPARATOR ';') AS Bonus_Infantry_Max_HP,
  22. GROUP_CONCAT(Bonus_Max_Energy SEPARATOR ';') AS Bonus_Max_Energy,
  23. GROUP_CONCAT(Bonus_Merging_Speed_Boost_Pacts SEPARATOR ';') AS Bonus_Merging_Speed_Boost_Pacts,
  24. GROUP_CONCAT(Bonus_Merging_Speed_Boost_Skillstones SEPARATOR ';') AS Bonus_Merging_Speed_Boost_Skillstones,
  25. GROUP_CONCAT(Bonus_Monster_Hunt_DMG_Boost SEPARATOR ';') AS Bonus_Monster_Hunt_DMG_Boost,
  26. GROUP_CONCAT(Bonus_Monster_Hunt_Starting_MP SEPARATOR ';') AS Bonus_Monster_Hunt_Starting_MP,
  27. GROUP_CONCAT(Bonus_Monster_Hunt_Travel_Speed SEPARATOR ';') AS Bonus_Monster_Hunt_Travel_Speed,
  28. GROUP_CONCAT(Bonus_Ore_Production_Rate SEPARATOR ';') AS Bonus_Ore_Production_Rate,
  29. GROUP_CONCAT(Bonus_Pack_Attack SEPARATOR ';') AS Bonus_Pack_Attack,
  30. GROUP_CONCAT(Bonus_Player_EXP_Boost SEPARATOR ';') AS Bonus_Player_EXP_Boost,
  31. GROUP_CONCAT(Bonus_Ranged_ATK SEPARATOR ';') AS Bonus_Ranged_ATK,
  32. GROUP_CONCAT(Bonus_Ranged_DEF SEPARATOR ';') AS Bonus_Ranged_DEF,
  33. GROUP_CONCAT(Bonus_Ranged_Max_HP SEPARATOR ';') AS Bonus_Ranged_Max_HP,
  34. GROUP_CONCAT(Bonus_Reduced_Upkeep SEPARATOR ';') AS Bonus_Reduced_Upkeep,
  35. GROUP_CONCAT(Bonus_Research_Speed SEPARATOR ';') AS Bonus_Research_Speed,
  36. GROUP_CONCAT(Bonus_Resource_Gathering_Speed SEPARATOR ';') AS Bonus_Resource_Gathering_Speed,
  37. GROUP_CONCAT(Bonus_Siege_Engine_ATK SEPARATOR ';') AS Bonus_Siege_Engine_ATK,
  38. GROUP_CONCAT(Bonus_Siege_Engine_DEF SEPARATOR ';') AS Bonus_Siege_Engine_DEF,
  39. GROUP_CONCAT(Bonus_Siege_Engine_Max_HP SEPARATOR ';') AS Bonus_Siege_Engine_Max_HP,
  40. GROUP_CONCAT(Bonus_Stone_Production_Rate SEPARATOR ';') AS Bonus_Stone_Production_Rate,
  41. GROUP_CONCAT(Bonus_Timber_Production_Rate SEPARATOR ';') AS Bonus_Timber_Production_Rate,
  42. GROUP_CONCAT(Bonus_Training_Speed SEPARATOR ';') AS Bonus_Training_Speed,
  43. GROUP_CONCAT(Bonus_Trap_ATK SEPARATOR ';') AS Bonus_Trap_ATK,
  44. GROUP_CONCAT(Bonus_Trap_DEF SEPARATOR ';') AS Bonus_Trap_DEF,
  45. GROUP_CONCAT(Bonus_Trap_Max_HP SEPARATOR ';') AS Bonus_Trap_Max_HP,
  46. GROUP_CONCAT(Bonus_Travel_Speed SEPARATOR ';') AS Bonus_Travel_Speed,
  47. GROUP_CONCAT(Bonus_Wall_DEF_Boost SEPARATOR ';') AS Bonus_Wall_DEF_Boost
  48. FROM Equipment GROUP BY Name) AS T WHERE Type = 'Helmet'
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: 28.03.2024 - 21:21