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%)
-----


Sytuacja jest prosta - chcę aby po wybraniu w GUI aplikacji przez użytkownika wybranej kolejki pokazały się wszystkie typy użytkowników. Dodatkowo przy użytkownikach co nie wytypowali ma się pojawić jakiś znak więc muszę wiedzieć którzy to byli.

Wydaje się więc że sprawa prosta ale jak widać nie.

Zastanawiam się czy mam dobrze zaprojektowaną bazę danych. Mam tak:

tabela USER,
tabela TYPE (typ) ; pola m.in.: meet_id
tabela MEET(spotkanie/mecz) ; pola m.in: matchday_id
tabela MATCHDAY (kolejka meczy)

Być może tabelę TYPE też powinienem mieć złączoną z tabelą MATCHDAY i wtedy problem by zniknął ? ,Tylko wydawało mi się że pod względem optymalizacji/normalizacji bazy nie było sensu łączyć skoro z MATCHDAY jest już złączona tabela MEET.

emillo91 , w którym miejscu ten OR ?

Ten post edytował damianooo 7.01.2018, 16:59:29
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: 17.10.2025 - 09:01