Podmiana komorki z jednej tabeli, wartoscia z drugiej tabeli

Podmiana komorki z jednej tabeli, wartoscia z drugiej tabeli
PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 73
0

Mam takie dwie tabele

Kopiuj
        sql_create_table = """ CREATE TABLE IF NOT EXISTS related_hashtags (
                        main_hashtag    INTEGER REFERENCES hashtags_names (id) NOT NULL,
                        second_hashtag  INTEGER REFERENCES hashtags_names (id) NOT NULL,
                        unix_time       INTEGER NOT NULL
                        ); """
Kopiuj
        sql_create_table = """ CREATE TABLE IF NOT EXISTS hashtags_names (
                        id              INTEGER     PRIMARY KEY AUTOINCREMENT UNIQUE NOT NULL,
                        hashtag_name    TEXT        UNIQUE,
                        counter         INTEGER     DEFAULT (0) 
                        ); """

Chciałem wyświetlić tablicę related_hashtags, ale kolumny main_hashtag i second_hashtag chciałem podmienić wartością z kolumny hashtags_names.hashtag_name.

Robiłem coś podobnego używając WHERE, ale teraz nie wychodzi mi. Próbowałęm także użyć JOIN , ale także chyba robię coś nie tak.
Macie pomysł, co zrobić, żeby to zadziało?

Kopiuj
SELECT related_hashtags.* FROM hashtags_names,related_hashtags WHERE hashtags_names.id = related_hashtags.main_hashtag AND hashtags_names.id = related_hashtags.second_hashtag
Kopiuj
SELECT related_hashtags.* FROM hashtags_names JOIN related_hashtags on related_hashtags.main_hashtag=hashtags_names.id

S4
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1268
1

Mogą być jakieś babole składniowe:

Kopiuj
select hn_main.hashtag_name hm_name, hn_second.hashtag_name hs_name, rh.unix_time   from  related_hashtags rh  Join hashtags_names as hn_main on (rh.main_hashtag = hn_main.id ) Join hashtags_names  hn_second on  (rh.second_hashtag   = hn_second.id )
PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 73
0

A mógłbyś mi wytłumaczyć, jak o czytać, żebym wiedział na przyszłość?
Wnioskuję, że nie użyłeś dokłądnie tych samych nazw, ale nie mam pojęcia, o co chodzi z tym zapisem?
from related_hashtags rh -> Skad to rh sie bierze?

LB
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 75
1
Paweleczek napisał(a):

A mógłbyś mi wytłumaczyć, jak o czytać, żebym wiedział na przyszłość?
Wnioskuję, że nie użyłeś dokłądnie tych samych nazw, ale nie mam pojęcia, o co chodzi z tym zapisem?
from related_hashtags rh -> Skad to rh sie bierze?

https://www.w3schools.com/sql/sql_alias.asp
Słowo 'as' nie jest obowiązkowe i w tym przypadku nawet by się obyło bez nadawania aliasu tabeli related_hashtags.

PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 73
0

Podejrzewałem, że to może o to chodzić, ale nie byłęm pewien.
Spróbowałem uruchomić to query i nie działa. Trochę to query zmodyfikowałem, np dodałęm do AS i zamieniłęm na wielkie litery slowa kluczowe. Wywala mi taki błąd

Kopiuj
[01:42:36] Error while executing SQL query on database 'mastodon_hashtags': no such column: hashtags_names.hashtag_name

Albo czegoś nie widzę, albo czegoś nie ogaraniam.

S4
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1268
3

Sugerowałbym jednak zrobić krok lub nawet 10 w tył i poczytać, chociaż o podstawach SQL (SELECt, JOIN, WHERE) a nie walić głową w mur na oślep

ZD
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2310
1
Paweleczek napisał(a):

Podejrzewałem, że to może o to chodzić, ale nie byłęm pewien.
Spróbowałem uruchomić to query i nie działa. Trochę to query zmodyfikowałem, np dodałęm do AS i zamieniłęm na wielkie litery slowa kluczowe. Wywala mi taki błąd

Kopiuj
[01:42:36] Error while executing SQL query on database 'mastodon_hashtags': no such column: hashtags_names.hashtag_name

Albo czegoś nie widzę, albo czegoś nie ogaraniam.

Chłopie, najprostszy tutek SQl-a z podanymi zagadnieniami byś ogarnął w 2h

Trochę to query zmodyfikowałem, ... Wywala mi taki błąd

Uruchomcie szkalne kule i zgadnijcie JAK ZMIENIŁEM.
Nie musisz być mistrzem SQL (choć po tylu godzinach własnego czytania byś miał wystarczająco wiedzy) - ale co sam sadzisz o taki sposobie zadawania pytań ?
Trzyma wg ciebie to choć minimum potrzebnej komunikacji ?

PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 73
0

Chciałem przed snem wysłać posta i zapomniałem w końcu dodać to zmodyfikowane query. Sorry.
Dzisiaj jeszcze raz zmodyfikowałem to query

Kopiuj
SELECT * FROM related_hashtags INNER JOIN hashtags_names ON (related_hashtags.main_hashtag = hashtags_names.id ) INNER JOIN hashtags_names ON (related_hashtags.second_hashtag = hashtags_names.id )

A myślisz, że nie czytałem? Problem w tym, że większość prostszych tutoriali opisuje tylko pojedynczy JOIN, a ja mam podwojny.
Z tego mojego ostatniego query, jeśli wywale ostatniego INNER JOIN, to query się uruchamia, więc wydaje się, że działa, ale nie weryfikowałem jeszcze poprawności wyniku.

To query, które podałęm, nie działa.

Kopiuj
[23:14:23] Error while executing SQL query on database 'mastodon_hashtags': ambiguous column name: hashtags_names.id

S4
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1268
0

Po pierwsze primo, nawet tak chłopską logikę, to jak masz dwa razy tę samą tabelkę użytą dwa raz i jej nie dodasz aliasu to skąd baza ma wiedzieć, której ma użyć. I czytaj co masz w komunikatach, jak nie znasz angielskiego to użyj translatara.

Kopiuj
SELECT h1.hashtag_name main_name, h2.hashtag_name swcond_name  FROM related_hashtags INNER JOIN hashtags_names as h1 ON (related_hashtags.main_hashtag = h1.id ) INNER JOIN hashtags_names h2 ON (related_hashtags.second_hashtag = h2.id );

A tu masz dowód, że działa:
https://www.db-fiddle.com/f/o8Qch2aSLeEyudjW4R6RBr/1

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.