Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Złączenie tabel
Forum PHP.pl > Forum > Przedszkole
-piko-
Witam,
Mam logowanie do aplikacji, które sprawdza czy E-mail i hasło się zgadza i wtedy taka osoba otrzymuje dostęp. W tej chwili mam taki zapytanie:
  1. SELECT * FROM Klient WHERE Email='$Email' AND Haslo='$Haslo' LIMIT 1;

Chciałbym teraz przerobić to zapytanie tak, aby dodatkowo przeszukało tabele Pracownik po tych samych parametrach.
Chciałem zrobić to po przez UNION, ale tabele nie mają tych samych kolumn i nie działa mi to wtedy. Proszę o jakąś wskazówkę. Zależy mi na tym, że jeśli w któreś tabeli Email i Hasło się zgadza to żeby zwróciło mi wszystkie dane danego usera.
kamil_lk
Jakoś tak próbuj smile.gif
  1. SELECT *
  2. FROM Klient k, Pracownik p
  3. WHERE (k.Email='$Email' AND k.Haslo='$Haslo') OR (p.NazwaPolaEmail='$Email' AND p.NazwaPolaHaslo='$Haslo') LIMIT 1;
-piko-
To jest nawet ok. Ale ma jeden błąd. Jeśli choć jeden warunek będzie poprawny to zwróci zawrtość oby tabel. A ja chce aby zwróciło zawartość tylko tej tabeli w której Email i Hasło będzie poprawne.
mmmmmmm
SELECT 'pracownik' As Typ, id FROM pracownicy WHERE email='$email' AND haslo='$haslo'
UNION [ALL]
SELECT 'klient' As Typ, id FROM klienci WHERE email='$email' AND haslo='$haslo'
...
Tak naprawdę pozostałe pola cię nie interesują, więc tabele mogą mieć różną liczbę pól.
-piko-
Właśnie potrzebował bym wszystkie dane usera, bo później zapisuje je do tablicy i wykorzystuje później.
mmmmmmm
To sobie zrób, by zwracały jednakową liczbę kolumn...
SELECT id, imie, nazwisko, stanowisko FROM ...
UNION
SELECT id, nazwa, '', '' FROM ...
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.