Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> function return table
MGie
post 29.02.2016, 16:32:59
Post #1





Grupa: Zarejestrowani
Postów: 31
Pomógł: 5
Dołączył: 29.02.2016

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


Witam,
mam problem ze zwróceniem tymczasowej tablicy przez funkcję:
  1. CREATE OR REPLACE FUNCTION users_in_groups()
  2. AS
  3. BEGIN
  4. CREATE TEMPORARY TABLE IF NOT EXISTS results AS(
  5. SELECT u.id , u.name, u.email, ug.name, ug.id , ug.alias FROM users u, users_groups ug, users_in_groups uig
  6. WHERE
  7. u.id = uig.user_id
  8. AND
  9. ug.id = uig.group_id
  10. )
  11. RETURN results;
  12. END;
  13. /


Jak poprawnie to zrobić?
Go to the top of the page
+Quote Post
nospor
post 29.02.2016, 16:34:49
Post #2





Grupa: Moderatorzy
Postów: 36 457
Pomógł: 6297
Dołączył: 27.12.2004




Witaj nowy uzytkowniku forum. Pewnie myslisz ze my tu wrozki jestesmy, ale musze cie rozczarowac: nie jestesmy.
Dlatego tez jak cos ci nie dziala, nalezy podac co nie dziala oraz jakie dostajesz bledy.


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

"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
MGie
post 29.02.2016, 17:09:15
Post #3





Grupa: Zarejestrowani
Postów: 31
Pomógł: 5
Dołączył: 29.02.2016

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


błąd składni:
Kod
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FUNCTION users_in_groups()
    AS
    BEGIN
        CREATE TEMPORARY TABLE IF NO' at line 1
Go to the top of the page
+Quote Post
nospor
post 29.02.2016, 17:15:20
Post #4





Grupa: Moderatorzy
Postów: 36 457
Pomógł: 6297
Dołączył: 27.12.2004




http://dev.mysql.com/doc/refman/5.7/en/create-procedure.html
ja tam nigdzie nie widze OR REPLACE w skladni


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

"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
MGie
post 29.02.2016, 17:43:20
Post #5





Grupa: Zarejestrowani
Postów: 31
Pomógł: 5
Dołączył: 29.02.2016

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


Cytat(nospor @ 29.02.2016, 17:15:20 ) *
http://dev.mysql.com/doc/refman/5.7/en/create-procedure.html
ja tam nigdzie nie widze OR REPLACE w skladni

Faktycznie, myślałem że podstawy PL/SQL i MySQL się nie różnią, a jednak...

Doczytałem w dokumentacji MySQL że mogę zwróci w funkcji {STRING|INTEGER|REAL|DECIMAL},
nic o typach złożonych nie pisze.

W ten sposób chyba tego nie zrobię.

Ogólnie o co mi chodzi:
mam 3 tabele: users, users_groups, users_in_groups,
chciałbym w kontrolerze odebrać z bazy gotową tabelę zawierającą przynależność wszystkich użytkowników do grup.

myślę, że tak by było dobrze:
Kod
array (
    [0] => array(
        'user_id' => 3,
        'user_name' => 'Jan',
        'user_in_groups' => array(
            [0] => array(
                'group_id' => 1,
                'group_name' => 'admin',
            )
        )
    )
)



Jak to zrobić?
Go to the top of the page
+Quote Post
mmmmmmm
post 29.02.2016, 21:10:00
Post #6





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


Zrób VIEW zamiast funkcji
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: 27.04.2024 - 16:45