Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> problem z zapytaniem przy uzyciem Left Join do polaczenia kilku tabel
MakS
post 30.10.2006, 22:09:19
Post #1





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 11.04.2002
Skąd: Rzeszów

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


Mam problem z zapytaniem

  1. SELECT p.id, p.imie, p.nazwisko, t.min, t.co, k.id, k.nazwa, s.mecze, s.mecze_rez, s.min, s.bramki, s.zolte, s.czerwone
  2. FROM lfc_terminarz_mecz_live t, lfc_kraj k, lfc_postacie_profil p, lfc_terminarz_lfc m
  3. JOIN lfc_postacie_stat s ON p.id = s.postac_id AND s.sezon = m.sezon_id
  4. WHERE t.mecz_id = '5080' AND t.postac_id = p.id AND p.narodowosc = k.id AND m.id = '5080' AND (
  5. t.co = 'bramka' OR t.co = 'karny_strzelony' OR t.co = 'karny_niestrzelony' OR t.co = 'samoboj_lfc' OR t.co = 'zolta' OR t.co = 'czerwona' OR t.co = 'zmiana'
  6. )
  7. ORDER BY t.min DESC LIMIT 1


Blad: #1054 - Unknown column 'p.id' in 'on clause'

I nie wiem dlaczego jest zle, na kompie mi chodzi wszystko poprawnie, a na serwerze nie.
Wczesniej mialem podobny problem i poprostu zmienilem kolejnosc tabel w "FROM", ale tutaj gdy mam ON porownywanie do 2 komurek z 2 roznych tabel to juz nie wiem jak to poprawic.
Go to the top of the page
+Quote Post
MatheW
post 30.10.2006, 22:14:41
Post #2





Grupa: Zarejestrowani
Postów: 135
Pomógł: 0
Dołączył: 29.05.2006
Skąd: Lublin

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


Unknown column 'p.id' - nieznana kolumna sprawdź czy masz na pewno dobrą strukturę.


--------------------
[gg:8166107][jid:mmatheww@jabberpl.org][mail:mat.wojcik[at]gmail.com][www: http://mwojcik.pl]
Go to the top of the page
+Quote Post
MakS
post 30.10.2006, 22:26:21
Post #3





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 11.04.2002
Skąd: Rzeszów

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


Strukture mam dobra,
moze dam wyglad 3 tabel o ktore tutaj sie rozchodzi:
  1. CREATE TABLE `lfc_postacie_stat` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `postac_id` int(10) UNSIGNED NOT NULL DEFAULT '0',
  4. `sezon` int(10) UNSIGNED NOT NULL DEFAULT '0',
  5. `klub` int(11) NOT NULL DEFAULT '0',
  6. `mecze` int(3) UNSIGNED NOT NULL DEFAULT '0',
  7. `mecze_rez` int(3) NOT NULL DEFAULT '0',
  8. `min` int(4) NOT NULL DEFAULT '0',
  9. `bramki` int(3) NOT NULL DEFAULT '0',
  10. `zolte` int(3) NOT NULL DEFAULT '0',
  11. `czerwone` int(3) NOT NULL DEFAULT '0',
  12. PRIMARY KEY (`id`),
  13. KEY `sezon` (`sezon`),
  14. KEY `postac_id` (`postac_id`),
  15. KEY `klub` (`klub`)
  16. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
  17.  
  18. CREATE TABLE `lfc_postacie_profil` (
  19. `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  20. `nr` tinyint(3) UNSIGNED NOT NULL DEFAULT '0',
  21. `imie` varchar(60) character SET latin2 NOT NULL DEFAULT '',
  22. `nazwisko` varchar(60) character SET latin2 NOT NULL DEFAULT '',
  23. `data_ur` date NOT NULL DEFAULT '0000-00-00',
  24. PRIMARY KEY (`id`)
  25. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
  26.  
  27. CREATE TABLE `lfc_terminarz_lfc` (
  28. `id` int(11) NOT NULL AUTO_INCREMENT,
  29. `sezon_id` int(11) NOT NULL DEFAULT '0',
  30. `rozgrywki_id` tinyint(4) NOT NULL DEFAULT '0',
  31. `data` date NOT NULL DEFAULT '0000-00-00',
  32. `godz` time NOT NULL DEFAULT '00:00:00',
  33. `rozegrany` int(1) NOT NULL DEFAULT '0',
  34. UNIQUE KEY `id` (`id`)
  35. ) ENGINE=MyISAM DEFAULT CHARSET=latin2;
Go to the top of the page
+Quote Post
jarrod
post 30.10.2006, 22:35:06
Post #4





Grupa: Zarejestrowani
Postów: 312
Pomógł: 9
Dołączył: 14.10.2006
Skąd: warszawa

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


jednak nie podales struktury wszystkich tabel..
Go to the top of the page
+Quote Post
MakS
post 30.10.2006, 23:50:55
Post #5





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 11.04.2002
Skąd: Rzeszów

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


Cytat(jarrod @ 30.10.2006, 23:35:06 ) *
jednak nie podales struktury wszystkich tabel..


Ale blad jest z p.id czyli tabela fc_postacie_profil.

Ale moge oczywiscie podac i reszte:
  1. CREATE TABLE `lfc_terminarz_mecz_live2` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `mecz_id` int(11) NOT NULL DEFAULT '0',
  4. `min` tinyint(3) NOT NULL DEFAULT '0',
  5. `postac_id` int(11) NOT NULL DEFAULT '0',
  6. `przeciwnik_postac_id` int(11) NOT NULL DEFAULT '0',
  7. `samoboj_kto` varchar(30) collate latin1_general_ci NOT NULL DEFAULT '',
  8. `zmiana_za` int(11) NOT NULL DEFAULT '0',
  9. `przeciwnik_zmiana_za` int(11) NOT NULL DEFAULT '0',
  10. `skarny_kto` varchar(60) character SET latin2 NOT NULL DEFAULT '',
  11. `sk_lfc` tinyint(2) NOT NULL DEFAULT '0',
  12. `sk_prz` tinyint(2) NOT NULL DEFAULT '0',
  13. `co` enum('bramka','karny_strzelony','karny_niestrzelony','zolta','czerwona','samoboj','samoboj_lfc','zmiana','seriak_lfc_strzelony','seriak_prz_strzelony','seriak_lfc_niestrzelony','seriak_prz_niestrzelony','przeciwnik_bramka','przeciwnik_karny_strzelony','przeciwnik_karny_niestrzelony','przeciwnik_zolta','przeciwnik_czerwona','przeciwnik_zmiana','nic') collate latin1_general_ci NOT NULL DEFAULT 'nic',
  14. `bramki_lfc` int(2) NOT NULL DEFAULT '0',
  15. `bramki_przeciwnik` int(2) NOT NULL DEFAULT '0',
  16. `akcja` int(11) NOT NULL DEFAULT '0',
  17. `opis` text character SET latin2 NOT NULL,
  18. PRIMARY KEY (`id`),
  19. KEY `mecz_id` (`mecz_id`,`postac_id`),
  20. KEY `postac_id` (`postac_id`),
  21. KEY `zmiana_za` (`zmiana_za`),
  22. KEY `przeciwnik_postac_id` (`przeciwnik_postac_id`)
  23. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci ;
  24.  
  25. CREATE TABLE `lfc_kraj` (
  26. `id` int(11) NOT NULL AUTO_INCREMENT,
  27. `nazwa` varchar(60) character SET latin2 NOT NULL DEFAULT '',
  28. PRIMARY KEY (`id`)
  29. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
Go to the top of the page
+Quote Post
death from beyon...
post 6.11.2006, 14:18:12
Post #6





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 30.10.2006

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


Wydaje mi się, że problem wynika z prawidłowości, którą zauważyłem, tzn.:

Przy joinie, kolumny, po których joinujesz (czyli znajdujące się w ON) zostają wyrzucone z końcowego rezultatu. Dlatego twój błąd moim zdaniem dotyczy p.id, które umiejscowione jest zaraz za poleceniem SELECT. na twoim miejscu spróbowałbym odwołać się do kolumny s.id, albo w ogóle pokombinować w inny sposób.

Nie wiem też ile prawdy jest w moich dociekaniach winksmiley.jpg
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: 21.06.2025 - 07:56