Post
#1
|
|
|
Grupa: Developerzy Postów: 823 Pomógł: 12 Dołączył: 18.12.2005 Ostrzeżenie: (0%)
|
Ajjj... dawno nie pisałem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Więc witam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Mój problem polega na tym, że potrzebuje wybrać dane z drugiej tabeli, jednakże LEFT JOIN tu zawodzi. Posiadam tabele:
Przy zapytaniu:
chciałbym pobrać również wszystkie rekordy z tabeli tags gdzie tag_note = note_id przypisane do wybieranego rekordu. LEFT JOIN pobierze tylko jeden tag (rekord z tabeli tags), a chciałbym otrzymać wszystkie w jednym zapytaniu. Jakieś sugestie? Dzięki za odpowiedź (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Pozdrawiam, Athlan |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 100 Pomógł: 1 Dołączył: 6.02.2006 Ostrzeżenie: (0%)
|
Cytat Norbas, misiu... Ale czułości, żebyś chociaż był kobietą (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Widzę, że dalej się nie rozumiemy. Przecież otrzymasz wszystkie powiązane rekordy z tagami. Domyślam się co chcesz uzyskać (ale tego nie napisałeś): chcesz wyświetlić listę notatek z tagami przyporządkowanymi do danej notatki. Jeżeli tak, to można zastosować zapytanie, które podałem, ale jest w tym wypadku problem ze stronicowaniem, gdyż nie wiadomo ile tagów jest przyporządkowane do danej notatki. Moim zdaniem w takiej sytuacji jedno zapytanie nie wystarczy. W takim wypadku proponuję inne rozwiązanie. Wykonujesz zapytanie o notatki:
W pętli przetwarzasz wyniki zapytania wstawiając je do tablicy wyników i rezerwujesz jeden element takiej tablicy na tagi przyporządkowane do danej notatki: Kod $returns[$rows['note_id']] = array( 'note_blog' => $row['note_blog'], // itd. (pola, które są potrzebne) 'tags' => array() ); Następnie mając identyfikatory notatek wykonujesz drugie zapytanie tylko o tagi dla odczytanych identyfikatorów: Kod 'SELECT * FROM tags WHERE tag_note IN (' . impode(',', array_keys($returns)) . ')' W kolejnej pętli dodajesz odczytane wyniki tego zapytania do odpowiedniego elementu tablicy wyników: Kod $returns[$row['tag_note']['tags'][] = array( 'tag_name' => $row['tag_name'], 'tag_blog' => $row['tag_blog']); Jeżeli źle się domyślam, to pokaż na danych, które podałem jakie wyniki chcesz uzyskać. Ten post edytował Norbas 27.06.2007, 22:58:08 |
|
|
|
Athlan SELECT 27.06.2007, 15:06:23
Norbas Szczerze mówiąc nie wiem z czym masz problem. Zast... 27.06.2007, 17:02:16
Athlan @Norbas, zanim coś napiszesz sprawdź czy to działa... 27.06.2007, 18:53:08
Norbas Dobra sprawdziłem, chociaż nigdy nie sprawdzam tak... 27.06.2007, 20:48:44
AcidBurnt orpocz left i right sa jeszcze alter, inner join, ... 27.06.2007, 20:56:39
Athlan Norbas, misiu...
Cytatchciałbym pobrać również ws... 27.06.2007, 21:09:47
Athlan Norbas, właśnie dokładnie tak mam r... 27.06.2007, 23:10:37
envp A może najprościej zrobil LEFT JOIN notes a nie ta... 28.06.2007, 00:27:35
SongoQ Panowie to jest jakas amatorka. LEFT JOIN przeciez... 28.06.2007, 06:08:06
Athlan CytatA może najprościej zrobil LEFT JOIN notes a n... 28.06.2007, 08:45:23
SongoQ CytatCoś sugerujesz? Jakaś recepta na problem?
Ni... 28.06.2007, 10:06:31
Athlan Wybrałem trzeci sposób z przedstawionych 2 posty w... 28.06.2007, 20:29:17
envp @Athlan: jedna z zasad optymalizacji skryptów - je... 28.06.2007, 20:35:51
Athlan Cytat@Athlan: jedna z zasad optymalizacji skryptów... 28.06.2007, 20:42:37 ![]() ![]() |
|
Aktualny czas: 26.12.2025 - 13:23 |