Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> błąd w zapytaniu
BugsBunny
post 29.07.2007, 21:45:35
Post #1





Grupa: Zarejestrowani
Postów: 206
Pomógł: 4
Dołączył: 2.04.2005

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


  1. INSERT INTO `kategorie` (`nazwa`,`liczba_wpisow`, `miejsce`) VALUES ('nazwa','0','(SELECT `miejsce` FROM `kategorie` ORDER BY `miejsce` ASC LIMIT 1)')


W pole miejsce wstawia 0 , a gdy wpisze to zapytanie z SELECT oddzielnie to zwaraca normalnie najwiekszą wartość. CO jest nie tak?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Kicok
post 31.07.2007, 10:56:30
Post #2





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


Apostrofy.


  1. '(SELECT `miejsce` FROM `kategorie` ORDER BY `miejsce` ASC LIMIT 1)'

jest traktowane jako zwykły napis i podczas konwersji na INT zamieniane na 0

Ten post edytował Kicok 31.07.2007, 10:56:46


--------------------
"Sumienie mam czyste, bo nieużywane."
Go to the top of the page
+Quote Post
BugsBunny
post 31.07.2007, 14:40:24
Post #3





Grupa: Zarejestrowani
Postów: 206
Pomógł: 4
Dołączył: 2.04.2005

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


ale takie zapytanie
  1. INSERT INTO `kategorie` (`nazwa`,`liczba_wpisow`, `miejsce`) VALUES ('nazwa','0',(SELECT `miejsce` FROM `kategorie` ORDER BY `miejsce` ASC LIMIT 1))


wyrzuca mi błąd

#1093 - You can't specify target table 'kategorie' for update in FROM clause

Chyba będę to musiał rozbić na dwa zapytania sad.gif
Go to the top of the page
+Quote Post
Kicok
post 1.08.2007, 12:00:05
Post #4





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


No jak widać nie można podczas dodawania wierszy do tabeli jednocześnie wykonywać podzapytań na tej tabeli.

Nie jestem pewien do czego ci jest potrzebna ta kolumna `miejsce`, ale może problem rozwiąże ustawienie jej auto_incrementa?


--------------------
"Sumienie mam czyste, bo nieużywane."
Go to the top of the page
+Quote Post
joebezucha
post 1.08.2007, 12:55:45
Post #5





Grupa: Zarejestrowani
Postów: 43
Pomógł: 1
Dołączył: 23.05.2007
Skąd: Gliwice

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


Zrób tak żeby nie uzywać slowa Values zawierajacego jakies wartosci ale te "sztywne" wartosci podaj dopiero w zapytaniu SELECT

  1. INSERT INTO `kategorie` (`nazwa`,`liczba_wpisow`, `miejsce`) SELECT 'TWOJA NAZWA' AS 'nazwa', 'TWOJA_LICZBA' AS 'liczba_wpisow', `miejsce` FROM `kategorie` ORDER BY `miejsce` ASC LIMIT 1


A jeżli szukasz maksymalnego miejsca to lepiej użyj funkcji MAX() niż limituj i porządkuj:

  1. INSERT INTO `kategorie` (`nazwa`,`liczba_wpisow`, `miejsce`) SELECT 'TWOJA NAZWA' AS 'nazwa', 'TWOJA_LICZBA' AS 'liczba_wpisow', MAX(miejsce) AS 'miejsce' FROM `kategorie`



tak powinno dzialac... chyba;)

Pamiętaj że zapytanie SELECT nie musi zawsze pobierac danych z bazy danych:) np.

  1. SELECT 0 AS 'id', 'jajo' AS 'nazwa'


ps. nie wiem czy nadając nazwe kolumnie poprzez 'AS' można użyć ` z ' napewno zadziala

Ten post edytował joebezucha 1.08.2007, 13:03:59
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: 18.07.2025 - 02:37