![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 83 Pomógł: 0 Dołączył: 18.06.2008 Skąd: Reda Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam zapytanie tego typu
Rezultatem jest tabelka składająca się z pięciu wierszy: 1, Imię1, Nazwisko1, 1 1, Imię1, Nazwisko1, 2 1, Imię1, Nazwisko1, 3 1, Imię1, Nazwisko1, 4 1, Imię1, Nazwisko1, 5 Czy można, a jeśli to jak zmodyfikować zapytanie, żeby rezultatem było 5 imion i nazwisk oraz wszystkie identyfikatory `id2`, czyli np. 1, Imię1, Nazwisko1, 1 1, Imię1, Nazwisko1, 2 2, Imię2, Nazwisko2, 5 2, Imię2, Nazwisko2, 6 ... 5, Imię5, Nazwisko5, 10 (w sumie pięć imion i nazwisk i wszystkie możliwe `id2` Oczywiście wiem jak to podzielić w PHP na 2 zapytania, że pobiera listę imion i nazwisk a potem do każdego szuka `id2`, ale może da się to w jednym zapytaniu. (Jeśli temat jest nieprawidłowy, proszę o sugestie, bo nie wiem jak to inaczej zatytułować.) |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 378 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Jak dobrze rozumiem chodzi ci o CROSS JOIN.
-------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 83 Pomógł: 0 Dołączył: 18.06.2008 Skąd: Reda Ostrzeżenie: (0%) ![]() ![]() |
Niestety raczej nie.
Chciałbym, żeby "LIMIT 0, 5" dotyczył wyników z table1, a nie z table1 i table2 Ten post edytował bulimaxiu 10.07.2016, 18:06:31 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 801 Pomógł: 1827 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Każde imię i nazwisko ma wystąpić dwukrotnie? A dlaczego imię5 i nazwisko5 występuje tylko raz?
-------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 83 Pomógł: 0 Dołączył: 18.06.2008 Skąd: Reda Ostrzeżenie: (0%) ![]() ![]() |
Każde Imię i nazwisko ma wystąpić tyle razy, ile jest znalezionych powiązanych `id2`. Imię5 i Nazwisko5 jest tylko jeden raz, ponieważ został znaleziony tylko jeden `id2` powiązany z tym imieniem i nazwiskiem. Jeżeli Imię5 i Nazwisko5 będzie powiązane z `id2` np. 10 i 2, to ma pojawić się 2 razy.
A w zapytaniu chciałbym, żeby na liście pojawiły się imiona i nazwiska według kryterium LIMIT 0, 5 ze wszystkimi znalezionymi `id2`. Ten post edytował bulimaxiu 11.07.2016, 09:25:23 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 801 Pomógł: 1827 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Albo ja czegoś nadal nie rozumiem, albo masz obecnie taki zbiór danych, który daje Ci wynik podany pod "Rezultatem jest tabelka składająca się z pięciu wierszy".
Jeśli spiąłeś obydwie tabele po id i w wyniku tego imię1 i nazwisko1 zostało przypisane do id 1-5, to jest to poprawny rezultat zapytania. -------------------- |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 83 Pomógł: 0 Dołączył: 18.06.2008 Skąd: Reda Ostrzeżenie: (0%) ![]() ![]() |
Tak, zapytanie działa poprawnie, ale chciałbym uzyskać inny rezultat:
![]() Ten post edytował bulimaxiu 11.07.2016, 10:03:48 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 801 Pomógł: 1827 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Musisz powiązać table1.id z table2.table1_id
-------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 83 Pomógł: 0 Dołączył: 18.06.2008 Skąd: Reda Ostrzeżenie: (0%) ![]() ![]() |
Powiązanie jest, bo otrzymuję rezultat powiązania i to powiązanie działa prawidłowo. Problemem jest tylko to, że jak daję limit 5 rezultatów, to dostaję w sumie 5 pozycji zawierających 3 nazwiska (i to z niekompletną listą powiązań), a potrzebuję otrzymać 9 pozycji zawierających 5 nazwisk ze wszystkimi powiązaniami.
Czyli tak jakby trzeba było rozbić zapytanie, że najpierw pobiera listę 5 nazwisk, a potem szuka do nich wszystkich powiązań. Ten post edytował bulimaxiu 11.07.2016, 10:30:00 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 83 Pomógł: 0 Dołączył: 18.06.2008 Skąd: Reda Ostrzeżenie: (0%) ![]() ![]() |
Czy można to zapytanie dostosować do przeszukiwania 2 tabel, ale tak, żeby wyniki się nie krzyżowały, były unikalne, bez stosowania w PHP array_unique?
![]() Ten post edytował bulimaxiu 17.07.2016, 07:34:59 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 25.06.2025 - 11:28 |