• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

zapytanie do mysql podwójne

Object Storage Arubacloud
0 głosów
1,105 wizyt
pytanie zadane 3 lutego 2016 w SQL, bazy danych przez Dawid Warduliński Obywatel (1,830 p.)
edycja 3 lutego 2016 przez Patrycjerz
Witam mam zapytanie do mysql

SELECT * From uzytkownik, posty_img, posty_txt WHERE uzytkownik.id = posty_img.id_uzytkownika and uzytkownik.id = posty_txt.id_uzytkownika

uzytkownik.id = 1

posty_img.id_uzytkownika = 1

posty_txt.id_uzytkownika = 4

jak teraz wyświetlam jest pusto a jak dodam or zamiast and to  uzytkownik.id = posty_txt.id_uzytkownika jest równe 4 a ma się nie wyświetlić jak zrobić zapytanie założone z tego aby wyświetlić zawsze uzytkownik i posty_txt albo uzytkownik i posty_img albo wszystkie trzy.

2 odpowiedzi

+1 głos
odpowiedź 3 lutego 2016 przez Frendom Pasjonat (18,900 p.)
  1. Nie uzywamy SELECT *, tylko SELECT konkretna_wartosc, poniewaz takie pytania sa bardziej optymalne
  2. To co masz po operatorze AND  nie bedzie tobi dzialalo, poniewaz wczesniej uzytkownik.id przywornywales do id_uzytkownika w tabeli posty_img, gdzie id przyjmowalo wartosc 1, a teraz w drugiej czesci zapytania to samo uzytkownik.id(czyli wartosc 1) chcesz przyrownac do innej wartosci (a dokladnie 4). Chcac nie chcac takie zapytanie ci nie ma prawa dzialac. Wyglada na to ze masz kiepsko stworzona baze danych i zle porobione klucze obce
  3. Jezeli chcesz cos z tabel uzytkownik oraz posty_img to SELECT konkretna_wartosc FROM uzytkownik, posty_img WHERE tutaj_przyrownanie_kluczy_obcych. Analogicznie do tabel uzytkownik i posty_txt. Rownie dobrze do laczenia tabel mozesz uzyc inner join:  http://www.w3schools.com/sql/sql_join_inner.asp

 

komentarz 3 lutego 2016 przez Dawid Warduliński Obywatel (1,830 p.)

trochę się bawiłem w bazie i zrobiłem nową tabeli która miało to łączyć ale też nie nie działa schemat graficzny o co mi chodzi.

komentarz 3 lutego 2016 przez Frendom Pasjonat (18,900 p.)
Nie wstawie ci gotowych zapytan, bo to bedzie mijalo sie z celem. Ewentualnie pozniej jak bedziesz tworzyl je i cos nie bedzie gralo, to cos pokombinujemy. Ale po kolei:

1: Aby wyswietlic posty (id) nalezace do danego uzytkownika: z tabeli uzytkownicy wyciagasz sobie np login a z tabeli posty tylko id. W warunku WHERE porownujesz id_uzytkownika z tabeli posty do id w tabeli uzytkownicy

2: Dodatkowo do zapytania powyzej, wyswietlamy tresc danego postu: wiec gdy mamy juz post przyrownany do uzytkownika, to nastepnie (AND) id_postu z tabeli posty_txt porownujemy do id w tabeli posty. W ten sposob uzyskamy tresc, ktora wpisal dany uzytkownik. Oczywiscie w SELECT... FROM musimy dodac tabele posty_txt

3: Analogicznie jak powyzej id_postu z tabeli posty_img porownujemy do id z tabeli posty. Do selecta dodajemy tez kolejna tabele

Ja jestem jakos zwolennikiem uzywania WHERE, ale jak pisalem wyzej mozna tez uzyc INNER JOIN, kwestia przyzwyczajenia. Mam nadzieje ze cos z tego zadziala :)
komentarz 3 lutego 2016 przez Dawid Warduliński Obywatel (1,830 p.)

zrobiłem tak 

SELECT * FROM uzytkownik, post, posty_txt, posty_img WHERE

 uzytkownik.id = post.id_uzytkownika AND

 post.id = posty_txt.id_post AND post.id = posty_img.id_post

ale ja ktoś dodał sam tekst bez post_img to się nie wyświetli

komentarz 3 lutego 2016 przez Frendom Pasjonat (18,900 p.)

staraj sie wstawiac zapytania/kod w sekcji code, bo teraz nie wszystko mozna zobaczyc 

A co do tego, czy ktos dodal img czy nie, to bardzo fajnie bedzie to mozna juz w PHP rozwiazac, po prostu dajac warunek if

komentarz 3 lutego 2016 przez Dawid Warduliński Obywatel (1,830 p.)
No właśnie nie da się if zrobić bo jak nie mam rekordu w tabeli to całe zapytanie jest puste
0 głosów
odpowiedź 3 lutego 2016 przez jeremus Maniak (59,720 p.)

"ale ja ktoś dodał sam tekst bez post_img to się nie wyświetli"

aby się wyświetlił, musisz tabele posty_txt i posty_img złączyć z tabelemi uzytkownicy-posty przez left join

komentarz 3 lutego 2016 przez Dawid Warduliński Obywatel (1,830 p.)
zobacz jak na zdjęciu opisałem 2 opcje

Podobne pytania

0 głosów
2 odpowiedzi 288 wizyt
pytanie zadane 29 listopada 2015 w PHP przez Widemo Użytkownik (920 p.)
0 głosów
1 odpowiedź 219 wizyt
pytanie zadane 22 lutego 2017 w SQL, bazy danych przez kacperl95 Obywatel (1,980 p.)
0 głosów
1 odpowiedź 377 wizyt
pytanie zadane 25 kwietnia 2020 w SQL, bazy danych przez Kacpeer Nowicjusz (120 p.)

92,566 zapytań

141,420 odpowiedzi

319,610 komentarzy

61,952 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...