mam tabel MySQL następującokompleks dołączyć zapytanie
user TABLE {id INT}
profile TABLE {user_id INT, facebook_id varchar(50)}
messages TABLE {id INT, message TEXT, from_id INT, type enum('main','facebook'}
messages_to TABLE {user_id varchar(50), message_id INT}
profile.user_id REFERS To user.id
- the messages_to.message_id refers to the messages.ID column.
- the messages_to.user_id refers to profile.user_id IF messages.type = 'main' BUT
if message_type = 'facebook' THEN messages_to.user_id REFERS to profile.facebook_id
chcę zrobić dołączyć zapytanie, które w zasadzie wybiera wszystkie wiadomości do konkretnej osoby, ale rzecz jest messages_to.user_id może odnosić się zarówno the person's facebook ID or the person's ID (a reference to user.id column).
Więc w zasadzie kwerenda powinien działać następująco
- należy zaznaczyć wszystkie wiadomości w wiadomościach tabeli, a jeśli
messages.type = 'facebook'
sprawdza czy messages_to.user_id e powoduje skasowanie identyfikatora FACEBOOK danej osoby. (Należy pamiętać, że sklepy stół messages_to odbiorców dla każdej wiadomości ID) - ale jeśli
messages.type = 'main'
sprawdza, czymessages_to.user_id
równaperson's USER ID (USER.id)
Czy to możliwe, aby zrobić mysql join query
za to skutecznie?
Tabela Totemy-wiadomości zawiera WSZYSTKICH odbiorców dla każdej wiadomości w tabeli KOMUNIKATY. MOGĄ BYĆ WIĘCEJ NIŻ JEDEN ODBIORCY dla wiadomości.
Czy na pewno potrzebujesz osobnej tabeli do przechowywania danych facebook_id? A może w tabeli użytkownika pole facebook_id, które może mieć wartość zerową lub ma wartość. Za każdym razem, gdy ktoś tworzy konto za pośrednictwem Facebooka, tworzysz użytkownika w locie z pewną losową nazwą użytkownika (lub korzystasz z e-maila na Facebooku) i losowym hasłem. Wtedy zawsze możesz użyć user_id, a jeśli masz Facebooka, najpierw sprawdzasz odpowiedni user_id – mkk