Wczytanie wszystkich recordów, zamiast jednego

0

Witajcie,
Mam otóż taki problem, moje zapytanie do bazy

select * from table1 where name_a  IN (select name_a from table2 where ... )

to zapytanie do table2 zwraca więcej niż 1 row. to zapytanie działa ale zwraca mi tylko jeden wiersz i to ostatni,
Jak skonstruować zapytanie by docelowy select * table1 zwracał prawidłowy wynik, czyli wszystkie pozycje w tabeli o które pytam?
Z góry dzięki za odp.

0

No bez szkalnej kuli ciężko odpowiedzieć. Na logikę w table1 masz 1 rekord z wartością name_a z tabeli table2.

Przygotuj próbkę danych i wtedy możemy wrócić do rozmowy.

0
|table 1
+---------+--------------------+
|id_tab1  |   name 		| inne dane
|1           | 	A
|2		            B
|3		            A
|4		            C	
|5		            B


|table2
+--------+-------+-------+
|id_tab2 | name | inne dane
|1	            | A	
|2	            | C	
|3	           |   C	
|4	           | A	
|5	           | A	

select w tab2 wyszukuje informacje które potrzebuje, załóżmy że jest to A . Wyników jest 3
częścią wspólną jest name Ja chcę uzyska wszystkie informacje z tabeli_1 ale tylko te które pokrywają się z wynikem z table2

1

Coś nie tak, zapytanie:

Select * from table1 where name in (select name from Table2)

zwraca rekordy 1,3,4

http://sqlfiddle.com/#!9/82241d3/1

Więc napisz to zapytanie tak aby zreprodukować problem

0
Paweł Płowiec napisał(a):

select w tab2 wyszukuje informacje które potrzebuje, załóżmy że jest to A . Wyników jest 3
częścią wspólną jest name Ja chcę uzyska wszystkie informacje z tabeli_1 ale tylko te które pokrywają się z wynikem z table2

Czyli chcesz zrobić intersekcję tabeli po kluczu?

Google: "mysql intersect table by column"

1 użytkowników online, w tym zalogowanych: 0, gości: 1