Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wnowu Joiny :) Zapytanie 3 tabele.
Forum PHP.pl > Forum > Bazy danych > MySQL
thornag
Witam

Przeszukalem forum, naczytalem sie przykladow ale nie potrafie ich zastosowac do swojego problemu. Przegladnalem manual MySQL niestety nada nie moge problemu rozwiazac. Tedy nie bijcie prosze za kolejny temat dotyczacy joinow smile.gif

Otoz problem jest nastepujacy.

Trzy tabele o strukturze.

Kod
  Tabela lista_1:
  item_id | item_title | item_desc | user_id


Tabela lista_2 i lista_3 jest dokladnie taka sama.

Pytanie jak skonstruowac zapytanie podobne do tego :

  1. SELECT * FROM lista_1, lista_2, lista_3 WHERE user_id = 3


Powyzsze (oczywiscie) nie dziala, przyjmniej mnie nic nie zwrocilo ale mysle obrazuje moj problem. Pola w tabelach sa takie same wiec chcialbym zeby wzial je wszystkie i wpakowal do tymczasowej tabeli skad moglbym je wyswietlic sortujac np po dacie. Nie mam zabardzo pomyslu.
Jesli ktos zdecyduje sie pomoc prosze napisac kilka slow komentarza bo denerwuje mnie to ze nie moge tych JOINOw opanowac i zakazdym razem trzeba pytac smile.gif

Oczywiscie mozna by powiedziec, ze nalezy z trzech tabel zrobic jedna. Mozna owszem, jednakze dane roznia sie nieco, powiedzmy ze jedne dotycza koszulek druga tabela spodni a trzecia czapek (przyklady z kosmosu) wiec chce je trzymac osobno. Jesli jedyny sposob to zlozenie tabel razem od razu napisze, ze spodziewanych rekordow bedzie kilkadziesiat tysiecy. Dlatego wole je trzymac osobno. Jakis propozycje ?

Pozdrawiam.
nospor
Cytat
Oczywiscie mozna by powiedziec, ze nalezy z trzech tabel zrobic jedna. Mozna owszem, jednakze dane roznia sie nieco, powiedzmy ze jedne dotycza koszulek druga tabela spodni a trzecia czapek (przyklady z kosmosu) wiec chce je trzymac osobno.
Walisz dodatkowe pole TYP i ono bedzie okreslac czy to koszulka czy to czapka czy co tam innego

Cytat
ze spodziewanych rekordow bedzie kilkadziesiat tysiecy. Dlatego wole je trzymac osobno.
To zaden problem dla Mysql

Podsumowując: rozbijajac to na 3 tabele, tylko sobie zycie utrudniasz. A Twoja argumentacja do tego procederu jest marna smile.gif
thornag
Uooo jesli zostalo to okreslone to tutaj mianem PROCEDER to ja sie wycofuje z deklaracji ze kiedykolwiek cos takiego zrobilem tongue.gif

Coz zalezy mi na predkosci przy np 100 000 rekordow. Dobrze wiedziec ze dla MySQL to nie problem smile.gif Ide robic salatke z tabel. Wielkie dzieki smile.gif. A swoja droga istneije zapytanie ktore umozliwa zlaczenie ze saba tabel w ten sposob ?
nospor
Cytat
A swoja droga istneije zapytanie ktore umozliwa zlaczenie ze saba tabel w ten sposob ?
Masz na mysli nadal swoj pierwszy problem? oczywiscie ze tak:
http://dev.mysql.com/doc/refman/5.0/en/union.html
smile.gif
thornag
No tak, niedouczenie i znajomosc jedynie slowa JOIN jesli chodzi o laczenie tabel znow spowodowalo ze wykazalem sie wyjatkowa ignorancja w stosunku do manuala twierdzac ze nie znalazlem w nim odpwoiedzi smile.gif Dzieki za pomoc raz jeszcze.
bendi
Cytat(nospor @ 27.06.2006, 14:34 ) *
Masz na mysli nadal swoj pierwszy problem? oczywiscie ze tak:
http://dev.mysql.com/doc/refman/5.0/en/union.html
smile.gif

Można jeszcze zrobić tabele MERGE, ale to w sumie też UNION smile.gif
nospor
Cytat
is a collection of identical MyISAM
No, tylko ze te MERGE to tylko na MyIsam dzialają (a przynajmniej tak jest napisane - nie testowalem)
thornag
Jeszcze idac za ciosem, mam jedno pytanie odnosnie zapytac.

Schemat bazy:

Kod
TABELA staty:
POLA: id, koszulka, klikniecia, user_id


  1. <?php
  2. $result = mysql_query("SELECT klikniecia FROM staty WHERE user_id = 3")
  3.  while($row = mysql_fetch_array($result) {
  4.  $ile = $ile+$row[klikniecia];
  5. }
  6. ?>


Czy powyzsza petle mozna zastapic jednym zapytaniem ?

I od razu drugie pytanie o zapytanie smile.gif

Czy jesli wiem ze wynikiem zapytania bedzie dokladnie jedna wartos np dokladnie jedno user_id
i pobieram pole tylko z user_id na zasadzie: (wiem ze zapytanie samo w sobie bezsensu tongue.gif)

  1. SELECT user_id FROM uzytkownicy WHERE user_id = 3


Tutaj mam pewnosci ze wynikiem bedzie tablica z jedna tylko komorka. A wlasnie czy tablica ? Czy musze robic mysql_fetch_... zeby uizyskac wynik takiego zapytania ?
nospor
ad1)
  1. SELECT sum(klikniecia) suma FROM staty WHERE user_id = 3


ad2)
no do pobrania sluzą funkcje z rodziny mysql_fetch...
thornag
Czyli nie ma szans zeby zastosowac wynik zapytanie bezposrednio np uzywajac echo.

Dzieki za odpowiedzi. I zapewniam ze bede dziekowal jeszcze wielokrotnie smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.