Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zapytanie z JOIN dwie tabele
tabbi
post 18.08.2012, 11:02:25
Post #1





Grupa: Zarejestrowani
Postów: 150
Pomógł: 3
Dołączył: 30.10.2010

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


Witam,

schemat tabel:

  1. NOTES -> id, name, client_id
  2. NOTES_DETALIS -> id, notes_id, sub_name


Połączenie między tabelami jest dzięki notes.id = notes_details.notes_id
Sprawa wygląda tak że np. do jednego rekordu NOTES może być przypisanych jeden bądź kilka rekordów w NOTES_DETAILS

Problem pojawia się przy zapytaniu:

  1. SELECT * FROM NOTES LEFT JOIN NOTES_DETAILS ON NOTES.id = NOTES_DETAILS.notes_id WHERE NOTES.client_id = 1 LIMIT 0, 4


gdyż źle brany jest pod uwagę limit jest on branyz całości a nie tylko z NOTES (gdy w NOTES_DETAILS MAMY 2 rekordy DO NOTES.id wtedy suma wychodzi 2 więc paginacja ogólnie nie będzie działać prawidłowo)
Jakieś sensowne rozwiązanie by móc limitować po NOTES.id a nie po całości, by paginacja dobrze działała.

Jakby ktoś bardziej optymalnie mógł napisać zapytanie (mój sposób działa lecz podwójne zagnieżdżenie w pierwszym selectie chciałbym jakoś móc ominąć )
  1. SELECT
  2. `t1_master`.`id`,
  3. `t2_master`.`job`
  4. FROM
  5. (
  6. (
  7. SELECT
  8. *
  9. FROM
  10. (
  11. SELECT
  12. *
  13. FROM
  14. `notes`
  15. ORDER BY `notes`.`date` DESC
  16. LIMIT 0,25
  17. )
  18. AS `t1_sub`
  19. )
  20. AS `t1_master`
  21. LEFT JOIN
  22. (
  23. SELECT
  24. *
  25. FROM
  26. (
  27. SELECT
  28. *
  29. FROM
  30. `notes_details`
  31. )
  32. AS `t2_sub`
  33. )
  34. AS `t2_master`
  35. ON `t2_master`.`note_id` = `t1_master`.`id`
  36.  
  37. )


Ten post edytował tabbi 18.08.2012, 13:14:39
Go to the top of the page
+Quote Post
mmmmmmm
post 18.08.2012, 14:30:14
Post #2





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


  1. SELECT
  2. `t1_master`.`id`,
  3. `t2_master`.`job`
  4. FROM
  5. (
  6. SELECT
  7. *
  8. FROM
  9. `notes`
  10. ORDER BY `date` DESC
  11. LIMIT 0,25
  12. )
  13. AS `t1_master`
  14. LEFT JOIN
  15. `notes_details` AS `t2_master`
  16. ON `t2_master`.`note_id` = `t1_master`.`id`
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: 25.06.2025 - 00:44