Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Zmiana wartości kolumny pod warunkiem, że inna kolumna = xxx
tombog
post 21.01.2017, 11:11:11
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 9.12.2010

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


Witam. Dzisiaj mam problem ze zmianą wartości kolumny liczbowej jeśli wartość innej kolumny tekstowej ma zadaną wartość.

Użyta składnia:

Kod
UPDATE phpbb_posts SET poster_id=1453 where post_username=lipidor


Wynik:

#1054 - Unknown column 'lipidor' in 'where clause'

Kiedy w składni chodziło o tą samą kolumnę:

Kod
UPDATE phpbb_posts SET poster_id=115 where poster_id=24


nie było problemu ze zmianą wartości.

Gdzie robię błąd i jak ten problem rozwiązać?
Go to the top of the page
+Quote Post
viking
post 21.01.2017, 11:17:11
Post #2





Grupa: Zarejestrowani
Postów: 6 376
Pomógł: 1116
Dołączył: 30.08.2006

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


lipidor jak widzisz to nie nazwa kolumny tylko tring zatem jako string ma być traktowany.
http://dev.mysql.com/doc/refman/5.7/en/string-literals.html


--------------------
Go to the top of the page
+Quote Post
tombog
post 21.01.2017, 12:00:04
Post #3





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 9.12.2010

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


Dzięki Viking, ze stringiem działa smile.gif.

Mam kolejny problem, który wymaga określenia warunku z innej tabeli ale chyba mieści się w tym temacie, więc nie zakładam nowego.


Tabela phpbb_posts zawiera między innymi: numer postu post_id, nr topicu w którym znajduje się post topic_id oraz id autora poster_id

Tabela phpbb_topics zawiera między innymi: nr topicu topic_id, autora topicu topic_poster oraz pierwszy post w topicu topic_first_post_id

I teraz chodzi o taką zmianę hurtową kolumny topic_poster w tabeli phpbb_topics by jeśli jest aktualnie równa -1 przyjęła wartość poster_id z tabeli phpbb_posts jeśli kolumna post_id w tabeli phpbb_posts jest taka sama jak kolumna topic_first_post_id w tabeli phpbb_topics

Jak się odwołać do wartości z innej tabeli?

Go to the top of the page
+Quote Post
viking
post 21.01.2017, 12:03:17
Post #4





Grupa: Zarejestrowani
Postów: 6 376
Pomógł: 1116
Dołączył: 30.08.2006

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


http://stackoverflow.com/questions/1520941...in-update-query


--------------------
Go to the top of the page
+Quote Post
tombog
post 22.01.2017, 12:14:20
Post #5





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 9.12.2010

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


Dzięki. Czy taka składnia byłaby prawidłowa ? Dobrym torem idę?

Kod
UPDATE phpbb_topics SET phpbb_topics.topic_poster='phpbb_posts.poster_id' WHERE phpbb_topics.topic_poster='-1' AND phpbb_topics.topic_first_post_id='phpbb_posts.post_id'


bo co prawda błędów nie wypluwa, ale:

Zmodyfikowanych rekordów: 0. ( Wykonanie zapytania trwało 0.0004 sekund(y) )

A wiem, że są zależności i powinny być rekordy zmienione. Gdzie popełniam błąd?

Panowie (i panie jeśli takowe są), czy ktoś może mi przeanalizować tą składnię i pomóc? Gdzie popełniam błąd?

Ten post edytował tombog 21.01.2017, 12:52:45
Go to the top of the page
+Quote Post
Pyton_000
post 22.01.2017, 12:28:13
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


'phpbb_posts.post_id' traktowane jest jako string a nie wartość z kolumny.

Weź się za podstawy Mysql bo nic z tego nie będzie.
Go to the top of the page
+Quote Post
tombog
post 22.01.2017, 19:40:05
Post #7





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 9.12.2010

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


No właśnie się biorę ale idzie mi jak krew z nosa. Jeśli daję phpbb_posts.post_id to mi pluje błedem, że to nie jest kolumna. Jeśli daję jak string wtedy nie wywala błędu ale też nie trafia do celu jak sądzę i dlatego nie znajdując zależności nic nie zmienia. No więc nie wiem już jak to zastosować.
Go to the top of the page
+Quote Post
Pyton_000
post 22.01.2017, 19:54:40
Post #8





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


http://dev.mysql.com/doc/refman/5.7/en/update.html

Na samym dole masz składnię polecenia robiącego update z 2 tabelami.
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: 30.05.2025 - 02:42