Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Sumowanie wartości z kolumn, Każdy wiersz to wynik zapytania SELECT z innej tabel MySQL
Therminus
post
Post #1





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 24.05.2015

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


Mam w php zrobiona tabelkę, w której wiersze zawierają dane z tabel MySQL. Niektóre komórki to nie tylko proste pobranie danych z tabeli MySQL, ale efekt wykonywania działań na danych tabeli (dodawanie, dzielenie, mnożenie). Każdy wiersz to inna tabela. Wierszy (a więc i tabel MySQL) jest około 100.
Zachodzi potrzeba zsumowania wartości liczbowych z kilkunastu kolumn.
Jak to zrobić?
Go to the top of the page
+Quote Post
Lord
post
Post #2





Grupa: Zarejestrowani
Postów: 239
Pomógł: 32
Dołączył: 10.03.2004

Ostrzeżenie: (10%)
X----


Cytat(Therminus @ 1.06.2016, 16:47:02 ) *
Mam w php zrobiona tabelkę, w której wiersze zawierają dane z tabel MySQL. Niektóre komórki to nie tylko proste pobranie danych z tabeli MySQL, ale efekt wykonywania działań na danych tabeli (dodawanie, dzielenie, mnożenie). Każdy wiersz to inna tabela. Wierszy (a więc i tabel MySQL) jest około 100.
Zachodzi potrzeba zsumowania wartości liczbowych z kilkunastu kolumn.
Jak to zrobić?

A możesz podać jak wygląda struktura tej tablicy? (print_r())

http://php.net/manual/en/function.array-sum.php
http://php.net/manual/en/function.array-map.php
http://stackoverflow.com/questions/1283872...array-array-sum
http://php.net/manual/en/function.array-column.php

to ci powinno pomóc. Ewentualnie jakiś foreach, ale to zależy jak te dane w tablicy rozmieszczone
Go to the top of the page
+Quote Post
Therminus
post
Post #3





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 24.05.2015

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


Cytat(Lord @ 1.06.2016, 21:38:27 ) *
A możesz podać jak wygląda struktura tej tablicy? (print_r())

Dzięki za zainteresowanie.
z linkami, które podałeś zapoznałem się wcześniej. Niestety, przykłady tam zawarte nie pasują do mojego problemu. Obawiam się, że popełniłem na samym początku błędy projektowe i teraz nie da sie prosto mojego problemu rozwiązać. Być może niepotrzebnie stworzyłem ponad setkę tabel. A może brak jakiejś zbiorczej tabeli. Może jakoś wspólnie coś ustalimy. Podaję niżej kawałek kodu wyświetlającego dwie pozycje.
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <?xml version="1.0" encoding="utf-8" ?>
  3. <html>
  4. <head>
  5. <link rel="Stylesheet" type="text/css" href="table.css" />
  6. <script type="text/javascript" src="table.js"></script>
  7. <meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
  8. <title>Nieruchomości</title>
  9. </head>
  10. <body>
  11. <script LANGUAGE="JavaScript">
  12. <!--
  13. document.write("<INPUT TYPE=\"BUTTON\" VALUE=\"Strona Główna\" onClick=\"location='index.php'\">");
  14. // -->
  15. </SCRIPT><p>
  16.  
  17. <p>
  18. <table border="1" width="100%" cellspacing="0" cellpadding="0" bordercolorlight="#000000">
  19. <tr>
  20. <td width="100%" colspan="20" bgcolor="#C0C0C0">
  21. <p align="center"><b><font size="2">Nieruchomości </font></b></td>
  22. </tr>
  23. <tr>
  24. <td width="7" align="center" bgcolor="#E0E0E0"><font size="2">LP</font></td>
  25. <td width="12" align="center" bgcolor="#E0E0E0"><font size="2">Ulica</font></td>
  26. <td width="8" align="center" bgcolor="#E0E0E0"><font size="2">Nr budynku</font></td>
  27. <td width="10" align="center" bgcolor="#E0E0E0"><font size="2">Nr działki</font></td>
  28. <td width="10" align="center" bgcolor="#E0E0E0"><font size="2">Nr księgi wiecz.</font></td>
  29. <td width="10" align="center" bgcolor="#E0E0E0"><font size="2">Powierz. działki</font></td>
  30. <td width="11" align="center" bgcolor="#E0E0E0"><font size="2">Obręb</font></td>
  31. <td width="10" align="center" bgcolor="#E0E0E0"><font size="2">Uwagi</font></td>
  32. <td width="10" align="center" bgcolor="#E0E0E0"><font size="2">PU mieszk.</font></td>
  33. <td width="10" align="center" bgcolor="#E0E0E0"><font size="2">PU cz. przynal.</font></td>
  34. <td width="10" align="center" bgcolor="#E0E0E0"><font size="2">PU lok. użyt.</font></td>
  35. <td width="10" align="center" bgcolor="#E0E0E0"><font size="2">PU LU + M</font></td>
  36. <td width="10" align="center" bgcolor="#E0E0E0"><font size="2">PU mieszk. z pr. wł.</font></td>
  37. <td width="10" align="center" bgcolor="#E0E0E0"><font size="2">PU lu. z pr. wł.</font></td>
  38. <td width="10" align="center" bgcolor="#E0E0E0"><font size="2">PU przyn. z pr. wł.</font></td>
  39. <td width="10" align="center" bgcolor="#E0E0E0"><font size="2">PU mieszk. spółdz.</font></td>
  40. <td width="10" align="center" bgcolor="#E0E0E0"><font size="2">Udział OW w nieruch.</font></td>
  41. <td width="10" align="center" bgcolor="#E0E0E0"><font size="2">PGS mieszk.</font></td>
  42. <td width="10" align="center" bgcolor="#E0E0E0"><font size="2">PGS użytkowe</font></td>
  43. <td width="10" align="center" bgcolor="#E0E0E0"><font size="2">PGS garaże</font></td>
  44. </tr>
  45. <?php
  46. $sql = mysql_connect('localhost', 'admin', 'smg');
  47. mysql_select_db('nieruchomosci');
  48. $char = "SET CHARSET UTF8";
  49. mysql_query($char);
  50.  
  51. // broniewskiego_2-10 (br_210)
  52. $zapytanie1 = "SELECT * FROM `dzialki` WHERE `ID` LIKE '1'";
  53. $wykonaj1 = mysql_query ($zapytanie1);
  54. while($wiersz=mysql_fetch_array ($wykonaj1))
  55.  
  56. {
  57. $suma_br_210_1 = "SELECT SUM(Pow_Uzyt) as sum_br_210_1 FROM `broniewskiego_2-10` WHERE `Kategoria` LIKE 'M'";
  58. $suma_br_210_2 = "SELECT SUM(Pow_przynal_zalicz) as sum_br_210_2 FROM `broniewskiego_2-10`";
  59. $suma_br_210_3 = "SELECT SUM(Pow_Uzyt) as sum_br_210_3 FROM `broniewskiego_2-10` WHERE `Kategoria` LIKE 'LU%'";
  60. $suma_br_210_4 = "SELECT SUM(Pow_Uzyt) as sum_br_210_4 FROM `broniewskiego_2-10`";
  61. $suma_br_210_5 = "SELECT SUM(Pow_razem) as sum_br_210_5 FROM `broniewskiego_2-10`";
  62. $suma_br_210_6 = "SELECT SUM(Pow_Uzyt_IF) as sum_br_210_6 FROM `broniewskiego_2-10` WHERE `Kategoria` LIKE 'M'";
  63. $suma_br_210_7 = "SELECT SUM(Pow_Uzyt_IF) as sum_br_210_7 FROM `broniewskiego_2-10` WHERE `Kategoria` LIKE 'LU%'";
  64. $suma_br_210_8 = "SELECT SUM(Pow_Przynal_IF) as sum_br_210_8 FROM `broniewskiego_2-10`";
  65. $rozn_br_210_9 = "SELECT Coalesce(SUM(case when `Kategoria` LIKE 'M' then `Pow_Uzyt` end),0) - Coalesce(SUM(case when `Kategoria` LIKE 'M' then `Pow_Uzyt_IF` end),0) as roz_br_210_9 FROM `broniewskiego_2-10`";
  66. $ilor_br_210_10 = "SELECT (Coalesce(SUM(case when `Kategoria` LIKE 'M' then `Pow_Uzyt_IF` end),0) + Coalesce(SUM(case when `Kategoria` LIKE 'LU%' then `Pow_Uzyt_IF` end),0) + Coalesce(SUM(Pow_Przynal_IF),0)) / (Coalesce(SUM(case when `Kategoria` LIKE 'M' then `Pow_Uzyt` end),0) + Coalesce(SUM(Pow_przynal_zalicz),0) + Coalesce(SUM(case when `Kategoria` LIKE 'LU%' then `Pow_Uzyt` end),0)) as ilo_br_210_10 FROM `broniewskiego_2-10`";
  67.  
  68. $result_br_210_1 = @mysql_query($suma_br_210_1);
  69. $result_br_210_2 = @mysql_query($suma_br_210_2);
  70. $result_br_210_3 = @mysql_query($suma_br_210_3);
  71. $result_br_210_4 = @mysql_query($suma_br_210_4);
  72. $result_br_210_5 = @mysql_query($suma_br_210_5);
  73. $result_br_210_6 = @mysql_query($suma_br_210_6);
  74. $result_br_210_7 = @mysql_query($suma_br_210_7);
  75. $result_br_210_8 = @mysql_query($suma_br_210_8);
  76. $result_br_210_9 = @mysql_query($rozn_br_210_9);
  77. $result_br_210_10 = @mysql_query($ilor_br_210_10);
  78. $sum_1_br_210 = mysql_fetch_assoc($result_br_210_1);
  79. $sum_2_br_210 = mysql_fetch_assoc($result_br_210_2);
  80. $sum_3_br_210 = mysql_fetch_assoc($result_br_210_3);
  81. $sum_4_br_210 = mysql_fetch_assoc($result_br_210_4);
  82. $sum_5_br_210 = mysql_fetch_assoc($result_br_210_5);
  83. $sum_6_br_210 = mysql_fetch_assoc($result_br_210_6);
  84. $sum_7_br_210 = mysql_fetch_assoc($result_br_210_7);
  85. $sum_8_br_210 = mysql_fetch_assoc($result_br_210_8);
  86. $roz_9_br_210 = mysql_fetch_assoc($result_br_210_9);
  87. $ilo_10_br_210 = mysql_fetch_assoc($result_br_210_10);
  88.  
  89. $roz_11_br_210 = (1 - $ilo_10_br_210['ilo_br_210_10']);
  90. $pdz_12_br_210 = $wiersz['Pow_dzial'];
  91. $ilc_13_br_210 = ($pdz_12_br_210 * $roz_11_br_210);
  92.  
  93. echo '<tr>
  94. <td align="center">'.$wiersz['ID'].'</td>
  95. <td align="center">'.$wiersz['Ulica'].'</td>
  96. <td align="center">'.$wiersz['Klatka'].'</td>
  97. <td align="center">'.$wiersz['Nr_dzialki'].'</td>
  98. <td align="center">'.$wiersz['Nr_KW'].'</td>
  99. <td align="right">'.$wiersz['Pow_dzial'].'</td>
  100. <td align="center">'.$wiersz['Obreb'].'</td>
  101. <td align="center">'.$wiersz['Uwagi'].'</td>
  102. <td align="right">'.$sum_1_br_210['sum_br_210_1'].'</td>
  103. <td align="right">'.$sum_2_br_210['sum_br_210_2'].'</td>
  104. <td align="right">'.$sum_3_br_210['sum_br_210_3'].'</td>
  105. <td align="right">'.$sum_4_br_210['sum_br_210_4'].'</td>
  106. <td align="right">'.$sum_6_br_210['sum_br_210_6'].'</td>
  107. <td align="right">'.$sum_7_br_210['sum_br_210_7'].'</td>
  108. <td align="right">'.$sum_8_br_210['sum_br_210_8'].'</td>
  109. <td align="right">'.$roz_9_br_210['roz_br_210_9'].'</td>
  110. <td align="right">'.$ilo_10_br_210['ilo_br_210_10'].'</td>
  111. <td align="right">'.round ($ilc_13_br_210, 4).'</td>
  112. <td align="right"></td>
  113. <td align="right"></td>
  114. </tr>';
  115. }
  116.  
  117. mysql_close($sql);
  118.  
  119. ?>
  120.  
  121. </table>
  122. </body>
  123. </html>
Go to the top of the page
+Quote Post
Lord
post
Post #4





Grupa: Zarejestrowani
Postów: 239
Pomógł: 32
Dołączył: 10.03.2004

Ostrzeżenie: (10%)
X----


  1. $suma_br_210_1 = "SELECT SUM(Pow_Uzyt) as sum_br_210_1 FROM `broniewskiego_2-10` WHERE `Kategoria` LIKE 'M'";
  2. $suma_br_210_2 = "SELECT SUM(Pow_przynal_zalicz) as sum_br_210_2 FROM `broniewskiego_2-10`";


tak nie mozesz tego zapisywać
powinieneś dać to do tablicy

  1. $suma_br_210[] = "SELECT SUM(Pow_Uzyt) as sum_br_210_1 FROM `broniewskiego_2-10` WHERE `Kategoria` LIKE 'M'";


dodanie ci do tablicy umożliwia ci skorzystania z wielu przydatnych funkcji i skrócić kod wielokrotnie

wydaje mi się, że jezeli masz wiele tabel i do każdej ulicy masz nowa tabele to jest to bład. Jezeli masz wiele tabel przechwujących taka sama strukture danych to powinines dodać to do jednej tabeli dodając jakies ID i wtedy masz dużo prostsze zapytania i sensowniejsza strukturę.

Ten kod

  1. $suma_br_210_1 = "SELECT SUM(Pow_Uzyt) as sum_br_210_1 FROM `broniewskiego_2-10` WHERE `Kategoria` LIKE 'M'";
  2. $suma_br_210_2 = "SELECT SUM(Pow_przynal_zalicz) as sum_br_210_2 FROM `broniewskiego_2-10`";
  3. $suma_br_210_3 = "SELECT SUM(Pow_Uzyt) as sum_br_210_3 FROM `broniewskiego_2-10` WHERE `Kategoria` LIKE 'LU%'";
  4. $suma_br_210_4 = "SELECT SUM(Pow_Uzyt) as sum_br_210_4 FROM `broniewskiego_2-10`";
  5. $suma_br_210_5 = "SELECT SUM(Pow_razem) as sum_br_210_5 FROM `broniewskiego_2-10`";
  6. $suma_br_210_6 = "SELECT SUM(Pow_Uzyt_IF) as sum_br_210_6 FROM `broniewskiego_2-10` WHERE `Kategoria` LIKE 'M'";
  7. $suma_br_210_7 = "SELECT SUM(Pow_Uzyt_IF) as sum_br_210_7 FROM `broniewskiego_2-10` WHERE `Kategoria` LIKE 'LU%'";
  8. $suma_br_210_8 = "SELECT SUM(Pow_Przynal_IF) as sum_br_210_8 FROM `broniewskiego_2-10`";
  9.  
  10. $result_br_210_1 = @mysql_query($suma_br_210_1);
  11. $result_br_210_2 = @mysql_query($suma_br_210_2);
  12. $result_br_210_3 = @mysql_query($suma_br_210_3);
  13. $result_br_210_4 = @mysql_query($suma_br_210_4);
  14. $result_br_210_5 = @mysql_query($suma_br_210_5);
  15. $result_br_210_6 = @mysql_query($suma_br_210_6);
  16. $result_br_210_7 = @mysql_query($suma_br_210_7);
  17. $result_br_210_8 = @mysql_query($suma_br_210_8);
  18.  
  19. $sum_1_br_210 = mysql_fetch_assoc($result_br_210_1);
  20. $sum_2_br_210 = mysql_fetch_assoc($result_br_210_2);
  21. $sum_3_br_210 = mysql_fetch_assoc($result_br_210_3);
  22. $sum_4_br_210 = mysql_fetch_assoc($result_br_210_4);
  23. $sum_5_br_210 = mysql_fetch_assoc($result_br_210_5);
  24. $sum_6_br_210 = mysql_fetch_assoc($result_br_210_6);
  25. $sum_7_br_210 = mysql_fetch_assoc($result_br_210_7);
  26. $sum_8_br_210 = mysql_fetch_assoc($result_br_210_8);



można skrócić

  1. $suma_br_210 = array();
  2. $suma_br_210[] = "SELECT SUM(Pow_Uzyt) as sum_br_210_1 FROM `broniewskiego_2-10` WHERE `Kategoria` LIKE 'M'";
  3. $suma_br_210[] = "SELECT SUM(Pow_przynal_zalicz) as sum_br_210_2 FROM `broniewskiego_2-10`";
  4. $suma_br_210[] = "SELECT SUM(Pow_Uzyt) as sum_br_210_3 FROM `broniewskiego_2-10` WHERE `Kategoria` LIKE 'LU%'";
  5. $suma_br_210[] = "SELECT SUM(Pow_Uzyt) as sum_br_210_4 FROM `broniewskiego_2-10`";
  6. $suma_br_210[] = "SELECT SUM(Pow_razem) as sum_br_210_5 FROM `broniewskiego_2-10`";
  7. $suma_br_210[] = "SELECT SUM(Pow_Uzyt_IF) as sum_br_210_6 FROM `broniewskiego_2-10` WHERE `Kategoria` LIKE 'M'";
  8. $suma_br_210[] = "SELECT SUM(Pow_Uzyt_IF) as sum_br_210_7 FROM `broniewskiego_2-10` WHERE `Kategoria` LIKE 'LU%'";
  9. $suma_br_210[] = "SELECT SUM(Pow_Przynal_IF) as sum_br_210_8 FROM `broniewskiego_2-10`";
  10.  
  11.  
  12. $sum = array();
  13. foreach($suma_br_210 as $r){
  14. $result = @mysql_query($r);
  15. $sum[] = mysql_fetch_assoc($result);
  16. }


kolejna sprawa, nie uzywasz mysqli, a to bład.

Calość niestety wygląda bardzo zle smile.gif Jak chcesz to zrobić dobrze to chyba powinineś zacząć od zaplanowania strukury danych raz jeszcze, bo zle zaplanowane tabele w BD powoduje duzo wiecej problemów niz jest to warte, jak chcesz zeby ci pomóc to napisz jakie masz dane co chcesz uzyskać co będziesz wyszukiwać w tych tabelach itd.

Ten post edytował Lord 2.06.2016, 11:47:09
Go to the top of the page
+Quote Post
Therminus
post
Post #5





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 24.05.2015

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


Cytat(Lord @ 2.06.2016, 12:45:45 ) *
wydaje mi się, że jezeli masz wiele tabel i do każdej ulicy masz nowa tabele to jest to bład. Jezeli masz wiele tabel przechwujących taka sama strukture danych to powinines dodać to do jednej tabeli dodając jakies ID i wtedy masz dużo prostsze zapytania i sensowniejsza strukturę.


Tak więc po kolei.
Mam ponad 100 tabel, wszystkie o identycznej strukturze. Bla każdego budynku jedna tabela, plus do tego jeszcze jedna tabela 'dzialki'. Dane budynków, które są tam zawarte to:
  1. `ID` int(3) NOT NULL,
  2. `Ulica` varchar(30) COLLATE utf8_polish_ci DEFAULT NULL,
  3. `Klatka` int(4) NOT NULL,
  4. `Nr_Nazwa` varchar(20) CHARACTER SET utf8 NOT NULL,
  5. `Kategoria` varchar(10) CHARACTER SET utf8 DEFAULT NULL,
  6. `Pow_Uzyt` decimal(7,2) DEFAULT NULL,
  7. `Struktura` varchar(24) CHARACTER SET utf8 DEFAULT NULL,
  8. `Pow_przynal_zalicz` decimal(7,2) DEFAULT NULL,
  9. `Pow_razem` decimal(7,2) DEFAULT NULL,
  10. `Udzial_proc_w_nieruch` decimal(5,2) DEFAULT NULL,
  11. `Data_ust_prawa_odr_wlasn` date DEFAULT NULL,
  12. `Nr_aktu_notar` varchar(24) COLLATE utf8_polish_ci DEFAULT NULL,
  13. `Naz_podm_uzytk` varchar(20) COLLATE utf8_polish_ci DEFAULT NULL,
  14. `Rodz_prawa_do_lok` varchar(24) COLLATE utf8_polish_ci DEFAULT NULL,
  15. `Pow_Uzyt_IF` decimal(7,2) DEFAULT NULL,
  16. `Pow_Przynal_IF` decimal(7,2) DEFAULT NULL


Dane działek:
  1. `ID` int(3) NOT NULL,
  2. `Ulica` varchar(30) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
  3. `Klatka` varchar(10) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
  4. `Nr_dzialki` varchar(8) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
  5. `Obreb` varchar(20) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
  6. `Data_ost_wyp` date DEFAULT NULL,
  7. `Nr_KW` varchar(10) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
  8. `Data_ost_wyp_kw` date DEFAULT NULL,
  9. `Wlasn_od` date DEFAULT NULL,
  10. `WU_do` date DEFAULT NULL,
  11. `Akt_not_decyzja` varchar(35) CHARACTER SET utf8 COLLATE utf8_polish_ci DEFAULT NULL,
  12. `Pow_dzial` decimal(4,4) NOT NULL,
  13. `Nr_uchw_zarz` varchar(15) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
  14. `Data_uchw_zarz` date DEFAULT NULL,
  15. `Nr_aneksu` varchar(15) CHARACTER SET utf8 COLLATE utf8_polish_ci DEFAULT NULL,
  16. `Data_aneksu` date DEFAULT NULL,
  17. `Uwagi` varchar(15) DEFAULT NULL


Cytat(Lord @ 2.06.2016, 12:45:45 ) *
kolejna sprawa, nie uzywasz mysqli, a to bład.

Myślę, że da się to względnie łatwo naprawić.
Cytat(Lord @ 2.06.2016, 12:45:45 ) *
Calość niestety wygląda bardzo zle smile.gif Jak chcesz to zrobić dobrze to chyba powinineś zacząć od zaplanowania strukury danych raz jeszcze, bo zle zaplanowane tabele w BD powoduje duzo wiecej problemów niz jest to warte, jak chcesz zeby ci pomóc to napisz jakie masz dane co chcesz uzyskać co będziesz wyszukiwać w tych tabelach itd.

Chcę uzyskać przeglądanie tych danych jak wyżej budynkami, a także w zbiorczej tabeli mieć posumowane różne wartości. O tą tabelę zbiorczą się rozbiłem smile.gif
poniżej wklejam link do zrzutu wyglądu danych budynku
http://ifotos.pl/zobacz/bro2-10pn_saaqrwx.png
Może w przyszłości dorzuciłbym jakieś filtrowanie...

Ten post edytował Therminus 2.06.2016, 14:58:02
Go to the top of the page
+Quote Post
Pyton_000
post
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Zrobiłeś sobie mega kuku taką strukturą wink.gif
Go to the top of the page
+Quote Post
Therminus
post
Post #7





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 24.05.2015

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


Cytat(Pyton_000 @ 2.06.2016, 14:51:08 ) *
Zrobiłeś sobie mega kuku taką strukturą wink.gif

Zacząłem się tego domyślać jakiś czas temu.
I co teraz? Pora umierać? wink.gif
Go to the top of the page
+Quote Post
Pyton_000
post
Post #8





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Zaorać strukturę i stworzyć na nowo a życie stanie się piękniejsze.
Go to the top of the page
+Quote Post
mlawnik
post
Post #9





Grupa: Zarejestrowani
Postów: 455
Pomógł: 49
Dołączył: 12.04.2010

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


Osobna tabela budynki a do mieszka doda id_budynek i masz dużo łatwiej


--------------------
Pozdrawiam,
mlawnik

Cytat(nospor)
Jedzmy gówno.... miliony much nie może się przecież mylić
Go to the top of the page
+Quote Post
Therminus
post
Post #10





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 24.05.2015

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


Cytat(mlawnik @ 2.06.2016, 16:17:09 ) *
Osobna tabela budynki a do mieszka doda id_budynek i masz dużo łatwiej

Masz na myśli wszystkie budynki z wszystkich ulic w jednej tabeli?
Go to the top of the page
+Quote Post
Lord
post
Post #11





Grupa: Zarejestrowani
Postów: 239
Pomógł: 32
Dołączył: 10.03.2004

Ostrzeżenie: (10%)
X----


Cytat(Therminus @ 3.06.2016, 09:24:03 ) *
Masz na myśli wszystkie budynki z wszystkich ulic w jednej tabeli?

no tak to się robi smile.gif Musisz dodać tylko kolumne z ID która określi ci jaka ulicę smile.gif
Go to the top of the page
+Quote Post
Therminus
post
Post #12





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 24.05.2015

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


Cytat(Lord @ 3.06.2016, 15:14:42 ) *
Musisz dodać tylko kolumne z ID która określi ci jaka ulicę

Żebym cię dobrze zrozumiał...
Jeden wiersz, to jeden lokal (przynajmniej u mnie tak jest).
Prezentacja ma być budynkami, tak jak na obrazku z linka wyżej.
To oznacza, że dla wierszy z odnoszących się do jednego budynku, ma być ten sam ID?
Go to the top of the page
+Quote Post
Lord
post
Post #13





Grupa: Zarejestrowani
Postów: 239
Pomógł: 32
Dołączył: 10.03.2004

Ostrzeżenie: (10%)
X----


Napisze Ci to na przykładzie adresów ludzi smile.gif

Masz takie dane:
Imie
Nazwisko
Miasto
Kod
Ulica
nr domu
Wojewodztwo
Kraj

To ile tabel stworzysz? Odzielna dla kazdego wojewdztwa? kraju? miasta? ulicy? no nietworzysz 1 tabele dodając jakies unikalne ID dla kazdego uzytkownika

ID | Imie | Nazwisko | Miasto | Kod | Ulica | nr domu | Wojewodztwo | Kraj

Tak naprawdę to mozna to rozbic jeszcze na 2 tabele, bo powiedzmy Miasto Wojewdztwo i Kraj jest takie same i bedzie sie dublować

TABELA 1
ID | Imie | Nazwisko | Kod | Ulica | nr domu | ID_Miasta

TABELA 2
ID_Miasta | Miasto | Wojewodztwo | Kraj

Tak naprawdę jak to podzielisz zalezy od tego co bedziesz chciał z tej bazy wyciagnąć itd.

Masz link przykładowej bazy danych jakiegos projektu
http://ai.ia.agh.edu.pl/wiki/_media/pl:dyd...aza2_do_wst.jpg


Go to the top of the page
+Quote Post
Therminus
post
Post #14





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 24.05.2015

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


Cytat(Lord @ 3.06.2016, 17:38:19 ) *
Napisze Ci to na przykładzie adresów ludzi smile.gif

Dzięki.
Coś tam zaczyna do mnie docierać. Na razie zrozumiałem tyle:
Dane z kolumn, które się powtarzają (dublują), mają wylądować w drugiej (albo nawet w trzeciej - zależy co się będzie dublować) tabeli.
A do pierwszej tabeli trafiają w to miejsce ID z drugiej tabeli.
W moim przypadku to może być:
1. tabela `Ulica`
2. tabela `Budynek`
3. tabela `Lokal` Ale tutaj powtarzają się numery klatek, numery lokali... nie wiem czy warto tworzyć oddzielne tabele na te numery (a Ty co o tym myślisz?).
Za to na pewno
4. tabela `Kategoria` i być może
5. tabela `Struktura`
Oczywiście tabela `Lokal` będzie zawierać ID tabel `Ulica`, `Budynek`, `Kategoria`i `Struktura`

Przyznam Lordzie, że jesteś dobrym nauczycielem. Przeczytałem wcześniej sporo na temat baz, próbowałem analizować różne przykłady i jakoś nie bardzo. A Ty jednym krótkim postem sprawiłeś, ze zaczynam kumać temat. Mam nadzieję. Jeśli się mylę, to mnie popraw.

Zdrówka.
offtopic.gif Jak będziesz przechodził koło spożywczaka, to kup sobie piwo. smile.gif
Go to the top of the page
+Quote Post
Lord
post
Post #15





Grupa: Zarejestrowani
Postów: 239
Pomógł: 32
Dołączył: 10.03.2004

Ostrzeżenie: (10%)
X----



  1. `ID` int(3) NOT NULL,
  2. `Ulica` varchar(30) COLLATE utf8_polish_ci DEFAULT NULL,
  3. `Klatka` int(4) NOT NULL,
  4. `Nr_Nazwa` varchar(20) CHARACTER SET utf8 NOT NULL,
  5. `Kategoria` varchar(10) CHARACTER SET utf8 DEFAULT NULL,
  6. `Pow_Uzyt` decimal(7,2) DEFAULT NULL,
  7. `Struktura` varchar(24) CHARACTER SET utf8 DEFAULT NULL,
  8. `Pow_przynal_zalicz` decimal(7,2) DEFAULT NULL,
  9. `Pow_razem` decimal(7,2) DEFAULT NULL,
  10. `Udzial_proc_w_nieruch` decimal(5,2) DEFAULT NULL,
  11. `Data_ust_prawa_odr_wlasn` date DEFAULT NULL,
  12. `Nr_aktu_notar` varchar(24) COLLATE utf8_polish_ci DEFAULT NULL,
  13. `Naz_podm_uzytk` varchar(20) COLLATE utf8_polish_ci DEFAULT NULL,
  14. `Rodz_prawa_do_lok` varchar(24) COLLATE utf8_polish_ci DEFAULT NULL,
  15. `Pow_Uzyt_IF` decimal(7,2) DEFAULT NULL,
  16. `Pow_Przynal_IF` decimal(7,2) DEFAULT NULL


Dane działek:
  1. `ID` int(3) NOT NULL,
  2. `Ulica` varchar(30) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
  3. `Klatka` varchar(10) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
  4. `Nr_dzialki` varchar(8) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
  5. `Obreb` varchar(20) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
  6. `Data_ost_wyp` date DEFAULT NULL,
  7. `Nr_KW` varchar(10) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
  8. `Data_ost_wyp_kw` date DEFAULT NULL,
  9. `Wlasn_od` date DEFAULT NULL,
  10. `WU_do` date DEFAULT NULL,
  11. `Akt_not_decyzja` varchar(35) CHARACTER SET utf8 COLLATE utf8_polish_ci DEFAULT NULL,
  12. `Pow_dzial` decimal(4,4) NOT NULL,
  13. `Nr_uchw_zarz` varchar(15) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
  14. `Data_uchw_zarz` date DEFAULT NULL,
  15. `Nr_aneksu` varchar(15) CHARACTER SET utf8 COLLATE utf8_polish_ci DEFAULT NULL,
  16. `Data_aneksu` date DEFAULT NULL,
  17. `Uwagi` varchar(15) DEFAULT NULL


Te tabele co masz są dobre. Stwórz tylko kolejna tabele łączącą te 2 tebele gdzie masz id_budynku i id_działki, ewentualnie mozesz jeszcze wyodrębic tabele kategorie gdzie w tabeli budynku masz id_kategorii, a w tabeli kategoria masz id i nazwa i tak powinno działać
Go to the top of the page
+Quote Post
Therminus
post
Post #16





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 24.05.2015

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


Cytat(Lord @ 5.06.2016, 11:35:39 ) *
Te tabele co masz są dobre. Stwórz tylko kolejna tabele łączącą te 2 tebele gdzie masz id_budynku i id_działki, ewentualnie mozesz jeszcze wyodrębic tabele kategorie gdzie w tabeli budynku masz id_kategorii, a w tabeli kategoria masz id i nazwa i tak powinno działać

Dzięki bardzo.
Co do kategorii lokalu, to faktycznie, aż się prosi, aby stworzyć oddzielną tabelę, bo kategorie są tylko dwie, ale z drugiej strony kolumna kategorie zawiera tylko jedną literę "M" (większość) albo dwie litery "LU" (spora ilość). Nie wiem, czy to się opłaca zmieniać. Wszak indeks i tak trzeba w kolumnie wpisać, a czy to będzie jedna cyfra, czy też jedna lub dwie litery, to moim zdaniem niewielka różnica. Może się mylę, nie wiem.

Muszę jeszcze o jedno zapytać:
Tabela `budynki` będzie zawierać ponad 5700.
Jak w takim razie wyodrębnić budynek? Czy ID mają być unikalne dla każdego wiersza, czy takie same dla każdego budynku (niektóre budynki zawierają kilka klatek)?
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 Aktualny czas: 21.08.2025 - 17:29