Temat: Zapytanie...

Witam.
Męczę się z wyciągnieciem rekordow o tym samym id_uzytkownika z 3 tabel. Robie powiadomienia i mam 3 kategorie poiwadomien: lokalne, producenta, produktu. Jezeli uzytkowik dodal produkty / lokalizacje / producentow to zapisuje kazdy do osobnej bazy o strukturze : |id||id_uzytkownika|id_ogloszenia|fb|email|tel|
fb/email/tel to tryby powiadomien (facebook, email, sms) wartosc 1 to tak, 0 to nie i teraz mam problem, chciałym z tych 3 tabel wyciagnac dane o uzytkowniku z tym samym id i oraz sumowac tryby powiadomien (jezeli w prduktach fb = 0, a w producentach fb = 1, to wychodzi ze fb = 1).
Dane zapisac do osobnej bazy jako jeden rekord i dac pole "wyslano" (0/1, tak/nie) i wtedy wysylac powiadomienia.
Podpowiedzcie jak jakoś porównać 3 tabele, probowalem juz roznymi zapytaniami (left joiny itp) i nie szlo, gdy ktoras z tabel byla pusta. Prosze o pomoocMarcin Leśko edytował(a) ten post dnia 10.03.13 o godzinie 12:25

Temat: Zapytanie...

a nie prosciej wpisac wszystko w jedną tabele a typy powiadomien trzymac w osobnej tabeli ?
typy_powiadomien:
id, nazwa
Przyklad:
1 lokalne
2 producenta
3 produktu

tabela_powiadomienia:
id, id_uzytkownika, id_typ_powiadomienia, ... reszta pol

Każdy użytkownik miałby 3 wpisy w tabeli 'tabela_powiadomienia' które należy aktualizowaćKrzysztof Wawoczny edytował(a) ten post dnia 10.03.13 o godzinie 12:35

Temat: Zapytanie...

Może nie jasno przedstawiłem mój problem.
Otóż tak, mam 3 tabele: produkty, producenci, lokalizacja (są to tabele do ustawiania parametrów przyjmowania ogłoszeń poprzez powiadomienia) w tych tabelach uzytkownik sobie dodaje od jakich producentow, produktow czy z jakiej lokalizacji ma dostawac te powiadomienia.
Są mniej wiecej w takiej strukturze: |id|id_uzytkownika|id_producenta|id_ogloszenia|fb|email|tel|.
No ok wszystko mamy ustawione wiec przychodzi czas na dodanie ogloszenia, wiec mam znowu nowe 3 tabele odpowiedzialne za wyslanie (ta sama struktura, tylkoz kolumna "wyslano"). Chcialbym teraz te 3 tabele (ponieaz aktualnie wysylaja duzo spamu, np: email z produktow, producentow i lokalizacji, jezeli ktos tak sobie ustawil) zastapic 1 tabela, ktora pobierala by odpowiednie te tryby wysylania (fb/email/tel) i ustawiala to w 1 rekordzie, zeby bylo bez spamu.

konto usunięte

Temat: Zapytanie...

Najszybciej to zrobić INNER JOIN, a w definicji pobieranych pól zastosować IF.

SELECT 
lokalne.id_uzytkownika,
IF(lokalne.fb=1 OR producent.fb=1 OR produkt.fb=1, 1, 0),
IF(lokalne.email=1 OR producent.email=1 OR produkt.email=1, 1, 0),
IF(lokalne.tel=1 OR producent.tel=1 OR produkt.tel=1, 1, 0)
FROM lokalne AS lokalne
INNER JOIN producenta AS producent ON producent.id_uzytkownika = lokalne.id_uzytkownika
INNER JOIN produktu AS produkt ON product.id_uzytkownika = lokalne.id_uzytkownika
Sebastian Zaborowski edytował(a) ten post dnia 10.03.13 o godzinie 12:43

Temat: Zapytanie...

Działa jak trzeba, dzięki bardzo!Marcin Leśko edytował(a) ten post dnia 10.03.13 o godzinie 13:21

konto usunięte

Temat: Zapytanie...

Marcin Leśko:
Działa jak trzeba, dzięki bardzo!

Cieszę się.

Jednak jak napisał @Krzysztof Wawoczny ta struktura zawiera błąd projektowy. Oczywiście działa, ale lepiej jakby były 2 tabele: powiadomienia i typy powiadomień. Relacje między nimi pozwoliłyby zrobić to samo w bardziej skomasowanej strukturze bazy.Sebastian Zaborowski edytował(a) ten post dnia 10.03.13 o godzinie 13:54

Temat: Zapytanie...

Chciałbym się Was jeszcze zapytać czy można do tego zapytania dorobić aby wybierało rektordy tylko wyslano = 0?

konto usunięte

Temat: Zapytanie...

Jeśli masz jakieś pole przechowujące taką informację to je dodaj.

Temat: Zapytanie...

W kazdej z podanych tabel jest takie pole, chyba jednak bede musial wymyslec jakis inny system... :/Marcin Leśko edytował(a) ten post dnia 10.03.13 o godzinie 16:24
Bartłomiej Jończy

Bartłomiej Jończy iOS / Java EE
Developer

Temat: Zapytanie...

Błagam, pisz w temacie coś więcej niż "Pytanie" lub "Zapytanie". Szanuj czas innych.



Wyślij zaproszenie do