Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Relacja pomiędzy dwiema tabelami
Forum PHP.pl > Forum > Przedszkole
-MarCiNWz-
Witam

Zaznaczę, że dopiero zaczynam zabawę z PHP+MySQL.
Mamy w pracy RCP i niestety lipny program do niego, więc postanowiłem napisać samemu coś prostego co będzie dostępne przez www dla wybranych osób w firmie.
Mam dwie tabele:
USERS
-----------------------------------------------
ID_USER | IMIE | NAZWISKO | DZIAŁ |
-----------------------------------------------
1 |JAN | KOWALSKI |MONTAŻ|
-----------------------------------------------

ATT_LOG
--------------------------------------------------
USER_ID | A_DATA | IN_OUT |
--------------------------------------------------
1 |2008-09-10 15:00:00 | 0 lub 1 |
--------------------------------------------------

Chciałbym uzyskać efekt: IMIE NAZWISKO DZIAŁ DATA We/Wy

Próbuje to zrobić zapytaniem: SELECT * FROM USERS, ATT_LOG WHERE USERS.ID_USER = ATT_LOG.USER_ID
Wyświetla mi dane w formacie jaki chcę, ale niestety podwójnie :/, zapytanie robię w phpMyAdminie więc powtórzenia w kodzie PHP nie mam. Co robię źle?? Czy ktoś mógłby mi podpowiedzieć jak to ugryść??
Z góry THX za odpowiedź. PzdR
JoShiMa
Spróbuj:

  1. SELECT * FROM USERS LEFT OUTER JOIN ATT_LOG ON USERS.ID_USER = ATT_LOG.USER_ID
-MarCiNWz-
Dzięki już działa. Mój sposób też zadziałał. Zrobiłem dziecinny bład, nie wiem jak, ale dane w tabeli USERS z nazwami użytkowników się zdublowały :/
Dzięki za odpowiedź.
-MarCiNWz-
Witam ponownie.

Mam jeszcze jeden problem. Chciałbym zrobić wyświetlanie tych samych danych tylko, że z zakresu zdefiniowanej daty, np: od 2008-09-09 do 2008-09-10.
Narazie wykombinowałem coś takiego:
  1. SELECT * FROM ATT_LOG WHERE (A_DATA BETWEEN '2008-09-09' AND '2008-09-10') ORDER BY A_DATA

Dostaje wynik w postaci:
-------------------------------------------------
USER_ID | IN_OUT | A_DATA
-------------------------------------------------
23 | 1 lub 0 | 2008-09-09 07:05:00
-------------------------------------------------
Jakiego użyć zapytania, żeby dostać to co wykonuje zapytanie z postu powyżej, ale tylko z zakresu od np: 2008-09-10 do 2008-09-11, czyli:.
Da się to zrobić za pomocą jednego zapytania??

Pozdrawiam
JoShiMa
Albo osobne zapytanie, albo w warunku dodać OR (A_DATA BETWEEN '2008-09-10' AND '2008-09-11') albo cały zakres i podzielić pod php.
-MarCiNWz-
Niestety jeszcze za słabo poznałem MySQLa. Narazie spędzam przy tym 2-3 godziny dziennie od 3 dni.
Cytat
albo w warunku dodać OR (A_DATA BETWEEN '2008-09-10' AND '2008-09-11')
Nie za bardzo wiem jak tego użyć, poproszę o jeszcze jedną wskazówkę.

PzdR
JoShiMa
A nie powinieneś zainwestować w jakiś podręcznik? Albo chociaż poszukać jakichś kursów w sieci?

  1. SELECT * FROM ATT_LOG WHERE (A_DATA BETWEEN '2008-09-09' AND '2008-09-10') OR (A_DATA BETWEEN '2008-09-10' AND '2008-09-11') ORDER BY A_DATA
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.