Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> PDO::Brak ID przy left join
NickOver
post
Post #1





Grupa: Zarejestrowani
Postów: 332
Pomógł: 10
Dołączył: 13.03.2014
Skąd: Bydgoszcz

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


Cześć!
Kod:
  1. $query = $this->db->prepare(
  2. "SELECT * FROM employees AS e
  3. LEFT JOIN cards AS c ON e.employee_id = c.employee_id
  4. LEFT JOIN enters AS en ON en.card_id = c.card_id
  5. WHERE (c.number = :variable1 OR e.firstname = :variable2 OR e.lastname = :variable3 OR c.card_id = :variable4)"
  6. );

Niestety nie zwraca on ID użytkownika, całą reszte już tak. ID na pewno jest. Przy samym select'cie bez left join'a wszystko jest ok.
Wiecie o co chodzi?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
NickOver
post
Post #2





Grupa: Zarejestrowani
Postów: 332
Pomógł: 10
Dołączył: 13.03.2014
Skąd: Bydgoszcz

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


Cytat(mmmmmmm @ 2.03.2015, 13:41:09 ) *
Problemem jest tu... *.
Przy * zwracane są wszystkie kolumny ze wszystkich tabel. W MySQL w kolejności występowania we FROM. Czyli dla ciebie będzie to:
e.id, e..., ... c.id, c...., ... en.id, en...
A PDO nazywa te kolumny tak jak ma. Czyli nazywa je: id (z e), employee_id (z c), id (z c) - upss, nie mogę, bo już mam id. A potem wstawia pobrane wartości do odpowiednich kolumn. W kolejności występowania. Więc do id w efekcie wyląduje ci id z OSTATNIEJ tabeli. A jeśli jest ona dowiązana LEFT JOINem, to może się zdarzyć, że jest NULL, więc nie ma wartości.

A widzę, że nie skorzystałeś z rady i wolałeś użyć 4 zmiennej zamiast prostego IN ... Mam na myśli "(c.number = :variable1 OR e.firstname = :variable2 OR e.lastname = :variable3 OR c.card_id = :variable4)"



Nie zmieniłem bo dopiero dziś zerknąłem na ten temat.

Co do tego co napisąłeś apropo zapytania. Jak może nadpisywać wartością z innej tabelki skoro nie ma pasujących pól a co za tym idzie nie ma czym napisać bo tabelka którą chce dołaczyć nie ma odpowiednich pól (w sensie żadne nie zgadza się z polem które jest podane w łączeniu)?

Ten post edytował NickOver 2.03.2015, 14:16:30
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: 28.12.2025 - 13:08