![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 34 Pomógł: 1 Dołączył: 25.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Jak do tej pory wszystkie wieksze projekty (aplikacje webowe) tworzylem przy wykorzystaniu bazy MS SQL Server 2005 Express. Baza calkiem przyjemna, pomijajac brak wyrazen regularnych, zmiennych typu array oraz jednoplatformowosc. Przyszedl jednak moment, w ktorym trzeba bedzie sie przesiasc na baze wieloplatformowa (win, linux). Do wyboru mam MySQL oraz PosgreSQL. Sklanialbym sie w kierunku Posgresql (wieksze mozliwosci), jednak martwi mnie brak jak na dzisiejsze czasy procedur skladowanych - czyli brak mozliwosci oddzielenia logiki jezyka SQL od kodu PHP. Przy wykorzystaniu MS SQL'owych procedur skaldowanych mozna np zgrupowac kilka SELECTow i otrzymac poprzez jedno polaczenie z baza serie danych tabelaryczncych, np:
powoduje jednoszesne otrzymanie danych z trzech zapytan (a tylko jedno polaczenie do bazy). Czy istnieje analogiczna mozliwosc oddzielenia logiki SQL i pozostawienia jest w bazie PosgreSQL (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Z tego co udalo mi sie ustalic mamy tylko do dyspozycji fukcje skladowane, przez ktore nie da rady zwrocic wynikow zapytan kilku SELECTow jednoczescie... |
|
|
![]()
Post
#2
|
|
Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
Nie znam MsSQL stąd nie do końca wiem, jak takie zapytanie w nim by działało.
Jeśli jednak wszystkie te tabele mają taką samą konstrukcję ((IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ) to możesz skorzystać z klauzuli UNION, zarówno na poziomie jednego zapytania, jak i procedury napisanej w jednym z kilku języków obsługiwanych przez PG ( PL/pgSQL, C/PgSQL, Perl, Python, a nawet PHP) |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 34 Pomógł: 1 Dołączył: 25.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
W MsSQL zapytanie to zwraca 3 osobne tabele. Nie musza miec jednakowej konstrukcji. Po prostu dostaje sie obiekt Table[0], Table[1], Table[2], a w nim juz normalnie dane z poszczegolnych tabel. To bardzo ulatwia sprawe, nie musimy sie kilkukrotnie laczyc z SQL w celu wygenerowania jakies podstrony....
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 254 Pomógł: 10 Dołączył: 8.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Niestety w PostgreSQL nie jest możliwe zwrócenie wyników o różnych ROWTYPE'ach (inny zestaw kolumn).
Jeśli jednak przeszkadzają ci wszelkie braki w funkcjonalności to raczej wybierz Postgre zamiast MySQL, ponieważ dla tego kryterium Postgre ma dużo większą przewagę nad MySQL. Jest naturalnie obejście dla podanego przez Ciebie problemu - typy złożone. Tylko nie wiem jak są one potem odbierane na poziomie aplikacji, ale najprawdopodobniej jako string w formacie ala JSON. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 34 Pomógł: 1 Dołączył: 25.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
To by bylo calkiem ciekawe rozwiazanie. PHP 5.x ma funkcje konwertujaca string JSON => array.
Czy w PostgreSQL mozna w latwy sposob wynik zapytania SELECT przekonwertowac do Stringu JSON, czy trzeba zrobic to we wlasnym zakresie ? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.09.2025 - 11:22 |