Może u można użyć UNION ALL do tego. Za pomocą tego operatora można łączyć zestawy wyników z wielu zapytań, zachowując wszystkie wiersze z każdego z nich. Zauważ, że operator UNION (bez słowa kluczowego ALL) wyeliminuje wszystkie "duplikaty" wierszy, które istnieją w zestawie wyników. Operator UNION ALL zachowuje wszystkie wiersze z każdego zapytania (i prawdopodobnie będzie działał lepiej, ponieważ nie ma nakładu związanego z wykonywaniem operacji duplikowania czeku i usuwania).
Liczba kolumn i typ danych każdej kolumny musi być zgodny w każdym z zapytań. Jeśli jedno z zapytań ma więcej kolumn niż drugie, czasami dodajemy wyimaginowane wyrażenia w drugim zapytaniu, aby kolumny i typy danych były "zgodne". Często pomocne jest dołączenie wyrażenia (dodatkowej kolumny) do listy SELECT każdego zapytania, które zwraca literał, aby ujawnić, które z zapytań było "źródłem" wiersza.
SELECT 'col1' AS source, col23, col343, col33, d FROM table1 WHERE ...
UNION ALL
SELECT 'col2', t2.fee, table2.fi, table2.fo, 'fum' FROM table2 JOIN table3 ON ...
UNION ALL
SELECT 'col3', '1', '2', buckle, my_shoe FROM table4
Można owinąć zapytania jak to w zestawie nawiasie i używać go jako widoku inline (lub „tabela pochodzi”, w MySQL slangu), dzięki czemu można wykonywać operacje zbiorcze na wszystkie wymienione wydziwianie. np .:
select one.a
, SUM(one.b)
FROM (
SELECT 'q1' AS source, a, b, c, d FROM t1
UNION ALL
SELECT 'q2', t2.fee, t2.fi, t2.fo, 'fum' FROM t2
) one
GROUP BY one.a
ORDER BY one.a
Ale myślę, że łączenie tabel bardziej odpowiednie. Nadzieję pomóc
Dlaczego ** nie chcesz używać złączeń? – Sjon
jest możliwe bez dołączenia? Lazyloading czy coś takiego !! – mohsen
Myślę, że łączenie też jest lepsze. Czy możesz powiedzieć nam więcej o tym, jak chcesz wydrukować? –