Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL]Połączenie dwóch zapytań w mysql
kasanowak
post
Post #1





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

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


Głupi problem, ale nie radzę sobie z poprawnym skonstruowaniem jednego zapytania w bazie danych mysql. Mam dwa zapytania:
  1. UPDATE `tabela` SET `mtime` = ( SELECT REPLACE( `mtime` , '2011', '2008' )

i
  1. SELECT * FROM `tabela` WHERE aid < 56


Z tych dwóch zapytań chcę stworzyć jedno, tak aby zamieniało daną wartość tylko dla danych których aid jest mniejszy niż 56. Kombinowałem tak:
  1. UPDATE `tabela` SET `mtime` = ( SELECT REPLACE( `mtime` , '2011', '2008' ) FROM `tabela` WHERE aid < 56 )

i tak:
  1. UPDATE `tabela` SET `mtime` = ( SELECT REPLACE( `mtime` , '2011', '2008' ) WHERE aid < 56 )


Ale wywala błędy... Da się w ogóle te dwa zapytania skumulować w jedno ?(IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
Niktoś
post
Post #2





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Nie wiem czy to poprawi,ale masz zbędne ' , mianowicie powinno to wyglądać:
  1. UPDATE tabela SET mtime = ( SELECT REPLACE( mtime , '2011', '2008' ) WHERE aid < 56 )
ech to i tak ci nie zadziała bo w podzapytaniu brakuje from tabela:
  1. UPDATE tabela SET mtime = ( SELECT REPLACE( mtime , '2011', '2008' ) FROM tabela WHERE aid < 56 )


Ten post edytował Niktoś 16.12.2011, 21:50:40
Go to the top of the page
+Quote Post
kasanowak
post
Post #3





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

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


Informacje chcę uzyskać tylko z jednej tabeli, po poprawkach wciąż nie działa, jest taki błąd:
#1093 - You can't specify target table 'tabela' for update in FROM clause
To jest to zapytanie:
  1. UPDATE tabela SET mtime = ( SELECT REPLACE( mtime , '2011', '2008' ) FROM tabela WHERE aid < 56 )


Ten post edytował kasanowak 16.12.2011, 21:53:37
Go to the top of the page
+Quote Post
Niktoś
post
Post #4





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Ok ,spróbuj jeszcze tak:
Cytat
UPDATE cpg15x_pictures SET mtime = ( SELECT REPLACE( mtime , '2011', '2008' ) as Moja FROM cpg15x_pictures WHERE aid < 56 )

Ech spojrzałem na replace i przekombinowane masz:
  1. UPDATE cpg15x_pictures SET mtime = REPLACE( mtime, '2011', '2008') WHERE aid < 56;
-to powinno zadziałać

Ten post edytował Niktoś 16.12.2011, 22:04:38
Go to the top of the page
+Quote Post
kasanowak
post
Post #5





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

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


Ten sam błąd :-)

Cytat(Niktoś @ 16.12.2011, 21:54:38 ) *
Ech spojrzałem na replace i przekombinowane masz:
  1. UPDATE cpg15x_pictures SET mtime = REPLACE( mtime, '2011', '2008') WHERE aid < 56;
-to powinno zadziałać

Działa :-) Faktycznie przekombinowałem, dzięki.


Ten post edytował kasanowak 16.12.2011, 22:43:14
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 17:32