![]() |
![]() ![]() |
![]() |
![]()
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:
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 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 0 Dołączył: 6.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
wydaje mi się ze musisz skorzystać z funkcji JOIN aby połączyć tabele.
Tu wszystko jest ładnie opisane: http://www.elektroonline.pl/a/2460,Komenda...SQL,baza_wiedzy Dasz radę (IMG:style_emoticons/default/wink.gif) |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 262 Pomógł: 26 Dołączył: 23.01.2009 Skąd: eZ Systems Ostrzeżenie: (0%) ![]() ![]() |
skorzystaj z aliasów dla pól, zamiast *. Na przykład, zamiast:
Zrób tak:
To tylko przykład, ale pokazuje o co kaman, a przy okazji przyspieszasz zapytanie wybierając tylko to co Ci jest potrzebne. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 778 Pomógł: 84 Dołączył: 29.07.2010 Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury. Ostrzeżenie: (20%) ![]() ![]() |
oczwiście nie wiem, jaka funkcja zastępuje u Ciebie mysql_query bez pętli wyświetlisz tylko jeden rekord |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 29.11.2011 Ostrzeżenie: (0%) ![]() ![]() |
No to utknąłęm na dobre ! Mimo przestudiowania kilku poradnikow z SQL nadal nie mogę odnaleźć odpowiedzi na ten wydawalo by się banalny problem. Nigdzie nie jest napisane jak wyciagnac z kilku tabel wiersz o tej samej nazwie kolumny. Uzycie JOIN nie rozwiązuje problemu. Nawet jeśli zwraca poprawną ilość rekordów to nadal nie wysiwtlają się wyniki z kolumn o tej samej nazwie ( id_numer_telefonu ). Wyswietla się jeden numer telefonu dla danej kolumny i żaden więcej. Aliasy też nie dają rozwiązania. Bo niby jak nadać alias dla kolumny której nie ma. Kicha, nie wiem jak to dalej ugryzć, choć jestem przekonany, że rozwiązanie jest stosunkowo proste. Tylko jak je odnaleźć ? (IMG:style_emoticons/default/wink.gif) pozdrawiam Adam |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 778 Pomógł: 84 Dołączył: 29.07.2010 Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury. Ostrzeżenie: (20%) ![]() ![]() |
select
tabela1.kolumna as nazwa jaka bede sie poslugiwal tabela2.kolumna as nazwamojanowa tabela3.kolumna as nazwa_moja a w 1 zapytaniu na dole piszesz order by smsy nie podajac kolumny, np ordr by smsy.id |
|
|
![]()
Post
#7
|
|
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.
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.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 05:05 |