Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> INSERT + SELECT + MAX ...
marverix
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 15.12.2007

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


Witam!
Wie ktoś dlaczego to zapytanie wywołuje błąd:
Unknown column 'position' in 'field list' questionmark.gif

INSERT INTO k_opt_cat VALUES ('','1',(SELECT MAX(position)+1),'test','test','test')

// pierwsza wartość jest pusta bo to jest auto_increment

pozdrawiam serdecznie!

Ten post edytował marverix 15.12.2007, 22:37:00
Go to the top of the page
+Quote Post
AxZx
post
Post #2





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


bo nie podales z jakiej tabeli ma pobrac wyniki
nie ma takiej kolumny jak position.


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
marverix
post
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 15.12.2007

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


hehe... myslisz ze tego nei sprawdzałem? tongue.gif
jest taka kolumna jak positon bo wlasnie do niej wklada nowa wartosc { position=MAX(position)+1 }
a jak dam FROM to wywala mi całkowicie inny błąd. taki głupi to jeszcze nie jestem tongue.gif czasami pomyśle tongue.gif naprawdę ostatecznością było pisanie tutaj. w Google też szukałem! - żeby nie było.
Go to the top of the page
+Quote Post
webdice
post
Post #4


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Maksymalną pozycje odczytujesz z tej samej tabeli? Napisz jakie błędy wyskakują Ci w konkretnych sytuacjach.

Ten post edytował webdicepl 15.12.2007, 22:50:19
Go to the top of the page
+Quote Post
marverix
post
Post #5





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 15.12.2007

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


no bo nic innego mi nie przyszło do głowy biggrin.gif ma to działać jak auto_increment tongue.gif
yhmm... chcę to zrobić w jednym zapytaniu. bo wiem że można w 2 (osobno) i będzie gites majonez, no ale... w ostateczności.

mogę do tego 'wewnętrznego' SELECT dodać WHERE?
(np. SELECT MAX(position)+1 WHERE cid='2')

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

SQL: INSERT INTO k_opt_cat VALUES ('','1',(SELECT MAX(`position`)+1),'test','test','test')
ERR: #1054 - Unknown column 'position' in 'field list'

SQL: INSERT INTO k_opt_cat VALUES ('','1',(SELECT MAX(`position`)+1 FROM k_opt_cat),'test','test','test')
ERR: #1093 - You can't specify target table 'k_opt_cat' for update in FROM clause
Go to the top of the page
+Quote Post
webdice
post
Post #6


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Przed chwilą to sprawdzałem. Pierwszy przykład jest na pewno zły bo nie podajesz tabeli w SELECT, co do drugiego sposobu to wygląda poprawnie z tym że jeśli to jest ta sama tabela to wyskakuje błąd, dodatkowo szukałem w manual'u MySQL i wszystkie przykłady są na dwóch tabelach. Prawdopodobnie nie da się tego zrobić, ale nie jestem tego pewien.
Go to the top of the page
+Quote Post
marverix
post
Post #7





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 15.12.2007

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


no i w tym momencie to staje się bez sensu. bo jak tu zrobić efekt auto_increment? dry.gif
Go to the top of the page
+Quote Post
webdice
post
Post #8


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Znalazłem, może nie do końca estetyczne rozwiązanie ale działa.

  1. INSERT INTO `test` (`id`, `name`, `position`) VALUES (NULL, 'name', (SELECT * FROM (SELECT MAX(`position`)+1 FROM `test`) AS `position`));
Go to the top of the page
+Quote Post
marverix
post
Post #9





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 15.12.2007

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


  1. INSERT INTO `k_opt_cat` (`id`,`iid`,`position`,`title_pl`,`title_en`,`title_de`) VALUES (NULL, '1', (SELECT * FROM (SELECT MAX(`position`)+1 FROM `k_opt_cat`) AS `position`),'test','test','test');


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

i co teraz? tongue.gif
Go to the top of the page
+Quote Post
webdice
post
Post #10


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




  1. (SELECT * FROM (SELECT MAX(`position`)+1 FROM `test`) AS `position`)


Zapomniałeś gwiazdki przy pierwszym SELECT'cie. Co do gwiazdki, spróbuj dać samo position bo nie ma sensu pobierać wszystkich rekordów, tylko nie wiem czy to zadziała.
Go to the top of the page
+Quote Post
frickle
post
Post #11





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 20.04.2006
Skąd: Kraków/Lublin/Lubartów

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


A próbowałeś tak:
  1. INSERT INTO k_opt_cat VALUES ('','1',(SELECT MAX(`position`) FROM k_opt_cat)<span style='color:orange'>+1,'test','test','test');

questionmark.gif?

Ten post edytował frickle 16.12.2007, 17:29:52


--------------------
Lepiej kijek obcinkować niż go potem pogrubasić.
Go to the top of the page
+Quote Post
webdice
post
Post #12


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Cytat(frickle @ 16.12.2007, 17:28:23 ) *
A próbowałeś tak:
  1. INSERT INTO k_opt_cat VALUES ('','1',(SELECT MAX(`position`) FROM k_opt_cat)<span style='color:orange'><span style='color:orange'>+1,'test','test','test');

questionmark.gif?


Przeczytaj dokładnie to co napisał autor.
Go to the top of the page
+Quote Post
marverix
post
Post #13





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 15.12.2007

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


Cytat(webdicepl @ 16.12.2007, 15:12:46 ) *
  1. (SELECT * FROM (SELECT MAX(`position`)+1 FROM `test`) AS `position`)


Zapomniałeś gwiazdki przy pierwszym SELECT'cie. Co do gwiazdki, spróbuj dać samo position bo nie ma sensu pobierać wszystkich rekordów, tylko nie wiem czy to zadziała.


no przeciez dalem gwiazdke... guitar.gif

czyli tylko przez 2 polecenia?... ;/

odpowie mi ktoś? dry.gif
Go to the top of the page
+Quote Post
webdice
post
Post #14


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Mi na MySQL 5.0.45 to działa, jaką masz wersje MySQL?
Go to the top of the page
+Quote Post
marverix
post
Post #15





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 15.12.2007

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


4.1.21
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: 19.08.2025 - 15:33