Podmiana komorki z jednej tabeli, wartoscia z drugiej tabeli

0

Mam takie dwie tabele

        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
                        ); """
        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?

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

1

Mogą być jakieś babole składniowe:

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 )
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?

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.

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

[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.

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

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

[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 ?

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

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.

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

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.

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1