Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Zmiana wartości kolumny pod warunkiem, że inna kolumna = xxx
Forum PHP.pl > Forum > Przedszkole
tombog
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ć?
viking
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
tombog
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?

tombog
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?
Pyton_000
'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.
tombog
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ć.
Pyton_000
http://dev.mysql.com/doc/refman/5.7/en/update.html

Na samym dole masz składnię polecenia robiącego update z 2 tabelami.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.