Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> JOIN - poprawa zapytania, Po zmianie zapytania brak pewnych danych w wyniku
damianooo
post
Post #1





Grupa: Zarejestrowani
Postów: 496
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

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


Witam,

Potrzebuję do poniższego SELECTa dodać dodatkowe złączenie:
  1. SELECT
  2. t.meet_id,
  3. t.host_type AS hostType,
  4. t.guest_type AS guestType,
  5. u.username AS username,
  6. u.shortname
  7. FROM user u
  8. LEFT JOIN type t ON t.user_id = u.id
  9. WHERE u.STATUS = 1
  10. ORDER BY u.id


Powyższy SELECT zwraca mi 73 rekordy gdzie 3 z nich dzięki złączeniu LEFT JOIN pokazują wartość NULL (co jest równoznaczne z tym że trzech użytkowników nie podało swoich typów) .

Niestety po dodaniu nowego złączenia wyświetla mi tylko 70 rekordów bez tych 3 z NULLem , które bardzo potrzebuję w tym wypadku.

Nowy SELECT:

  1. SELECT
  2. m.matchday_id,
  3. t.meet_id,
  4. t.host_type AS hostType,
  5. t.guest_type AS guestType,
  6. u.username AS username,
  7. u.shortname
  8. FROM user u
  9. LEFT JOIN type t ON t.user_id = u.id
  10. LEFT JOIN meet m ON t.meet_id = m.id
  11. WHERE u.STATUS = 1 AND m.matchday_id = 1
  12. ORDER BY u.id


PS. Tabela User jest połaczona po ID z tabelą TYPE a tabela TYPE jest połączona z tabelę MEET.

Próbowałem z INNER JOIN , RIGHT JOIN i samym JOIN i niestety nie działa (IMG:style_emoticons/default/sad.gif)

zauważyłem że powodem jest to że w klauzuli WHERE dodałem to:
m.matchday_id = 1

to już pewnie zmienia wiele w zapytaniu niestety bo Ci z NULLem odpadają od razu jeśli w tabeli MEET pozycja matchday jest równa 1 .

Ehh pewnie tego nie przeskoczę ...

Ten post edytował damianooo 6.01.2018, 15:17:10
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
damianooo
post
Post #2





Grupa: Zarejestrowani
Postów: 496
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

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


Problem w tym że na GUI wyświetlane się tylko typy wybranej kolejki - a nie wszystkie.

Próbuję to przerobić dalej w PHP ale kłopot mam w pętli w której łączę listę meczy z listą typów bo za dużo wychodzi mi pól z "-" co oznacza brak typu.
Jak nikt nie wytypował w danej kolejce to chcę aby przy każdym był znak "-" .

  1. foreach($meets as $meet){
  2. foreach ($usersTypes as $types){
  3. if($types['matchday_id'] != NULL){
  4. if($meet['meet_id'] == $types['meet_id']) {
  5. $result[$types['meet_id']]['types'][] = $types['hostType'].' - '.$types['guestType'];
  6. }
  7. }else{
  8. $result[$meet['meet_id']]['types'][] = '-';
  9. }
  10. }
  11. $result[$meet['meet_id']]['meet_id'] = $meet['meet_id'];
  12. $result[$meet['meet_id']]['host'] = $meet['host'];
  13. $result[$meet['meet_id']]['guest'] = $meet['guest'];
  14. }


Obecnie zapytanie mam takie:

  1. SELECT
  2. m.matchday_id,
  3. t.meet_id,
  4. t.host_type AS hostType,
  5. t.guest_type AS guestType,
  6. u.username AS username,
  7. u.shortname
  8. FROM user u
  9. LEFT JOIN type t ON t.user_id = u.id
  10. LEFT JOIN meet m ON t.meet_id = m.id AND m.matchday_id = 2
  11. WHERE u.STATUS = 1
  12. ORDER BY u.id


zwracam mi 73 dla matchday_id = 1 i 73 dla matchday_id = 2




Ten post edytował damianooo 7.01.2018, 20:03:58
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.10.2025 - 10:23