Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak wyciagnąć z kilku tabel rekordy o tej samej nazwie ?, j.w.
adamski9000
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 29.11.2011

Ostrzeżenie: (0%)
-----


Witam wszystkich forumowiczów.
Mam następujący problem z wydawało by się prostym zapytaniem sql. Jednakże meczę się z tym od kilku dni. Na googlu ciężko znaleźć odpowiedz, gdyż trudno jasno zdefiniować pytanie (IMG:style_emoticons/default/smile.gif)

Mianowicie mam 4 poniższe tabele. Próbuję wyciągnąć z nic wszystkie dane łącznie z informacja o numerach telefonu. No i tu zaczyna się problem. Zapytanie które stosuje:

  1. SELECT * FROM rozmowy,smsy,numery_telefonow,raporty
  2. WHERE raporty.id_raport='$id_raport'
  3. AND rozmowy.id_raport=raporty.id_raport
  4. AND smsy.id_raport=raporty.id_raport
  5. AND numery_telefonow.id_numer_telefonu=rozmowy.id_numer_telefonu
  6. AND numery_telefonow.id_numer_telefonu=smsy.id_numer_telefonu
  7. AND numery_telefonow.id_numer_telefonu=raporty.id_numer_telefonu
  8. ORDER BY smsy.DATA DESC


Powyższe zapytanie wyświetla jeden wynikowy rekord i to tylko z jednym numerem telefonu. W dodatku nie wiem której tabeli ten numer tel. dotyczy. A gdzie reszta numerów ? Nie ma !

1) Dlatego pytanie, jak zrobić aby wyświetlały się wszystkie przypisane numery telefonu przypisane do danego rekordu ?
2) Dodatkowo chciałbym kolejno wyświetlic wyniki sortując rozmowy,smsy wg daty. Ale jak to zrobić to już nie mam pojęcia. Sortowanie przez ORDER BY smsy.data nie zda rezultatu.

Bardzo bym prosił doświadczonych użytkowników o pomoc w tym męczącym mnie problemie (IMG:style_emoticons/default/smile.gif)


ROZMOWY
-------
id_rozmowa
adreat
data
id_numer_telefonu
id_raport


SMSY
-----
id_sms
adresat
data
id_numer_telefonu
tresc
id_raport


NUMERY_TELEFONOW
----------------
id_numer_telefonu
numer_telefonu


RAPORTY
-------
id_raport
data
id_numer_telefonu
imei


Z góry dziękuję

Ten post edytował adamski9000 29.11.2011, 20:08:57
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
adamski9000
post
Post #2





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 29.11.2011

Ostrzeżenie: (0%)
-----


To jak sie aliasy nadaje to ja wiem, ale to nie rozwiazuje problemu. Tylko jak nadac nazwę kolumnie, która ma powstac z polaczenia dwóch kolumn np. telefony.id_numer_telefonu=numery_telefonow.id_numer_telefonu AND smsy.id_numer_telefonu=numery_telefonow.id_numer_telefonu. W SELECIE wybieramy tylko rozmowy.id_numer_telefonu, gdyz nie ma bezposredniej kolumny rozmowy.numer_telefonu.

  1. SELECT
  2.  
  3. RO.id_numer_telefonu AS ro_id_num_tel,
  4. RA.id_numer_telefonu AS ra_id_num_tel,
  5. S.id_numer_telefonu AS s_id_num_tel,
  6. NT.numer_telefonu AS nt_num_tel
  7.  
  8. FROM
  9.  
  10. rozmowy AS RO,
  11. smsy AS S,
  12. numery_telefonow AS NT,
  13. raporty AS RA
  14.  
  15. WHERE
  16.  
  17. RA.id_raport=1 AND
  18. RO.id_raport=RA.id_raport AND
  19. S.id_raport=RA.id_raport AND
  20. NT.id_numer_telefonu=RA.id_numer_telefonu AND
  21. NT.id_numer_telefonu=RO.id_numer_telefonu AND
  22. NT.id_numer_telefonu=S.id_numer_telefonu


Powyzsze zapytanie generuje wyniki tylko z jednym i tym samym numerem telefonu i w dodatku generuje nie takie wyniki jakie bym sobie zyczyl (IMG:style_emoticons/default/wink.gif) , wiec gdzies tu jest błąd logiczny.

Poprawnie natomiast zwraca wyniki poniższa komenda z JOIN, jednak nadal nie wyswietla wszystkich kolumn z numerami telefonow, a powinny byc przeciez 2 kolumny z numerami telefonow. Jest tylko jedna.
  1. SELECT *
  2. FROM numery_telefonow
  3. JOIN rozmowy USING(id_numer_telefonu)








Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 18.10.2025 - 12:44