Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][php] Select z kilku takich samych tabel
harbii
post
Post #1





Grupa: Zarejestrowani
Postów: 311
Pomógł: 1
Dołączył: 27.05.2006

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


Mam tabele:
2008dok
2009dok
2010dok

Zawierają te same pola.

Jak napisać selecta aby odczytał ze wszystkich powyższych tabel?
Chodzi o coś w stylu:
  1. SELECT * FROM *dok
Go to the top of the page
+Quote Post
amii
post
Post #2





Grupa: Zarejestrowani
Postów: 728
Pomógł: 76
Dołączył: 12.06.2009

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


$tablica = array('2008', '2009', '2010');

for ($i=0; $i<count($tablica); $i++) {
$sql = "SELECT * FROM '$tablica[$i]'.dok";
}

Sprawdź składnię zapytania bo może się nie zgadzać


--------------------
gry flash online
Dobry hosting i tanie odnowienia domen firma: masternet.
Zarabianie bez wysiłku na domenach bez ruchu: prolink.
Go to the top of the page
+Quote Post
erix
post
Post #3





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




UNION?


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
harbii
post
Post #4





Grupa: Zarejestrowani
Postów: 311
Pomógł: 1
Dołączył: 27.05.2006

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


amii ok ale tu musimy znać początek nazwy (a w sumie to już całą nazwę) tabel a mi chodzi o coś w stylu *

może inny przykład:
edqwqadok
112312dok
csd32deefdok
...
i ma odczytać wszystkie tabele w bazie które kończą się na "dok"
Go to the top of the page
+Quote Post
bastard13
post
Post #5





Grupa: Zarejestrowani
Postów: 664
Pomógł: 169
Dołączył: 8.01.2010
Skąd: Kraków

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


Z tego co kojarze to się nie da tego zrobić normalnym zapytaniem, ale mogę się mylić.
Musiałoby to być coś podobnego do REGEXP tyle, że to nie działa w miejscu wpisywania tablic, a nic innego mi nie przychodzi do głowy.
Za pomocą kodu php możesz to robić w ten sposób:
  1. $zapytanie='show tables;';
  2. $wynik = $db->query($zapytanie); //pobierasz wszystkie tabele
  3. while($wiersz = $wynik->fetch_assoc())
  4. {
  5. //tutaj możesz wrzucić ewentualnie jakiś kod sprawdzający czy dana nazwa tabeli pasuje do wzoru
  6. $zapytanie='select * from '.$wiersz['Tables_in_nazwa_bazy'].';';
  7. $wynik2 = $db->query($zapytanie); //pobierasz wszystkie dane z danej tabeli
  8. echo '<br /><br />TABLICA '.$wiersz['Tables_in_nazwa_bazy'].':<br />';
  9. while($wiersz2 = $wynik2->fetch_assoc())
  10. { echo '<br />';
  11. foreach ($wiersz2 as $klucz => $wartosc)
  12. { echo $klucz.' -> '.$wartosc.'---'; }
  13. }
  14. }


Ten post edytował bastard13 9.01.2010, 21:26:32


--------------------
Go to the top of the page
+Quote Post
celbarowicz
post
Post #6





Grupa: Zarejestrowani
Postów: 253
Pomógł: 31
Dołączył: 30.03.2009
Skąd: Szczecin

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


zrób pętlę wewnętrzną w której odczytasz dane z pierwszej tabeli, a następnie pętla zewnętrzna zmieni numer tabeli i odczytasz następną tabelę.
Go to the top of the page
+Quote Post
erix
post
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
i ma odczytać wszystkie tabele w bazie które kończą się na "dok"

Skoro są to tabele o takiej samej strukturze, to dlaczego nie trzymasz danych w jednej różnicując je przez inny warunek? Trochę to dziwne rozwiązanie...


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
harbii
post
Post #8





Grupa: Zarejestrowani
Postów: 311
Pomógł: 1
Dołączył: 27.05.2006

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


erix
bo z tego co doczytałem to baza ma ograniczoną ilość danych więc po 10 latach może się nie zmieścić oraz chyba długo będzie trwało przeszukanie takiej bazy.

czy się mylęquestionmark.gif

Bo jak się mylę to nie ma tematu.

Ten post edytował harbii 11.01.2010, 21:18:49
Go to the top of the page
+Quote Post
bastard13
post
Post #9





Grupa: Zarejestrowani
Postów: 664
Pomógł: 169
Dołączył: 8.01.2010
Skąd: Kraków

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


http://dev.mysql.com/doc/refman/5.0/en/full-table.html
To na temat wielkości bazy. 2T chyba Ci na razie wystarczy:) A za 10 lat z pewnością ich wielkość się zwiększy. Co do przeszukiwania, jeżeli będziesz miał wszystko w jednej bazie to robisz tylko zapytanie do bazy i wyświetlenie danego wyniku. Jeżeli to podzielisz na parę baz to będziesz musiał dorzucić do kodu, przed wysłaniem zapytania, jakieś sprawdzenie, żeby wiedzieć, w której bazie masz szukać.
Które zadziała szybciej? To już zależy od wielkości bazy.


--------------------
Go to the top of the page
+Quote Post
harbii
post
Post #10





Grupa: Zarejestrowani
Postów: 311
Pomógł: 1
Dołączył: 27.05.2006

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


bastard13
ok dry.gif
Przekonałeś mnie,może faktycznie martwię się na wyrost.

dzięki za pdp
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 - 06:37