Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zapytanie SELECT na dwóch tabelach mającyh takie same pola
cod3r
post 1.10.2012, 22:11:56
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 1
Dołączył: 4.03.2011
Skąd: Gdańsk

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


Witam,
A więc pytanie dotyczy wykonania zapytania SELECT w celu uzyskania danych z dwóch tabel jednocześnie, problemem jest w moim wypadku to iż obie tabele w bazie mają takie same pola.

Struktury tabel to:
Tabela: pracownik, pola: id, imie, nazwisko
Tabela: uzytkownik, pola: id, imie, nazwisko

Chciałbym wykonać zapytanie które przeszuka tabele i zwróci mi informację czy dane imie znajduje się w bazie, np. Zenon.
Przykład pokazujący co chciałbym osiągnąć, oczywiście on nie zadziała:
  1. SELECT * FROM `pracownik`, `uzytkownik` WHERE imie='Zenon'

Go to the top of the page
+Quote Post
szalek01
post 2.10.2012, 00:11:23
Post #2





Grupa: Zarejestrowani
Postów: 129
Pomógł: 17
Dołączył: 17.09.2012

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


  1. SELECT
  2. COUNT(id) as count_p,
  3. (SELECT COUNT(id) as count_p FROM `uzytkownik` as u WHERE u.imie='uMichal') as count_u
  4. FROM
  5. `pracownik` as p
  6. WHERE p.imie='uMichal'


--------------------
PDO nie gryzie....
Go to the top of the page
+Quote Post
cod3r
post 2.10.2012, 08:26:26
Post #3





Grupa: Zarejestrowani
Postów: 45
Pomógł: 1
Dołączył: 4.03.2011
Skąd: Gdańsk

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


Ok, a idąc dalej, bo akurat chciałbym przy pomocy takiego zapytania sprawdzać po prostu czy dany rekord jest w bazie czy go nie ma, nie potrzebuję wiedzieć ile ich jest. Przyda mi się to np. do rejestracji.
Korzystam akurat z PDO i używam funkcji rowCount() ale przy powyższym zapytaniu ona zawsze zwróci 1, bo zawsze jeden wiersz jest zwracany.
Go to the top of the page
+Quote Post
maly_swd
post 2.10.2012, 11:28:33
Post #4





Grupa: Zarejestrowani
Postów: 744
Pomógł: 118
Dołączył: 14.02.2009
Skąd: poziome

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


  1. SELECT * FROM (
  2.  
  3. SELECT * FROM pracownik
  4. UNION ALL
  5. SELECT * FROM uzytkownik
  6.  
  7. ) a
  8. WHERE a.imie='Zenon'


Ten post edytował maly_swd 2.10.2012, 11:28:46


--------------------
śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu..
Go to the top of the page
+Quote Post
cod3r
post 2.10.2012, 13:43:10
Post #5





Grupa: Zarejestrowani
Postów: 45
Pomógł: 1
Dołączył: 4.03.2011
Skąd: Gdańsk

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


Dzięki, o takie coś mi właśnie chodziło.
Go to the top of the page
+Quote Post
maly_swd
post 3.10.2012, 10:17:53
Post #6





Grupa: Zarejestrowani
Postów: 744
Pomógł: 118
Dołączył: 14.02.2009
Skąd: poziome

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


takie cos powinno byc bardziej optymalne:

  1. SELECT * FROM (
  2.  
  3. SELECT * FROM pracownik WHERE imie='Zenon'
  4. UNION ALL
  5. SELECT * FROM uzytkownik WHERE imie='Zenon'
  6.  
  7. ) a


Mysql mieli wtedy mniej danych:)


--------------------
śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu..
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 10.06.2024 - 17:33