Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: inner join
Forum PHP.pl > Forum > Bazy danych > MySQL
adif
witam wszystkich...

problem jest następujący:
Oto fragment mojej bazy:
  1. CREATE TABLE `kategorie` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `parent_id` int(10) NOT NULL DEFAULT '0',
  4. `email ` varchar(32) NOT NULL DEFAULT '',
  5. PRIMARY KEY (`id`)
  6. );
  7.  
  8. CREATE TABLE `kategorie_opis` (
  9. `kategorie_id` int(11) NOT NULL DEFAULT '0',
  10. `nazwa` varchar(32) NOT NULL DEFAULT '',
  11. `opis` text,
  12. `jezyk_kod` char(2) NOT NULL DEFAULT 'pl',
  13. PRIMARY KEY (`kategorie_id`,`jezyk_kod`)
  14. );


I teraz potrzebuje wydobyć z bazy dane z połączonych tabel. Chcę mieć wszystkie dane ale tylko w określonej wersji językowej np. jezyk_kod = 'pl' - utworzyłem takie zapytanie:
  1. <?php
  2.  
  3. $jezyk='pl';
  4. $zapytanie = "select * from kategorie INNER JOIN kategorie_opis on kategorie.id=kategorie
    _opis.kategorie_id and kategorie_opis.jezyk_kod ='$jezyk'"
    ; 
  5.  
  6. ?>


poprawiam
---
nospor



Na localhost mam mysql:3.23.49, na serwerze mam mysql :4.0.25-standard

Na localhost zapytanie zwraca mi poprawnie dane, w drugim przypadku zapytanie zwraca błąd.

Sam już nie wiem o co chodzi. Może powinienem zupełnie inaczej napisać zapytanie. Pomocy!
nospor
Cytat
w drugim przypadku zapytanie zwraca błąd.

Cytat
Może powinienem zupełnie inaczej napisać zapytanie.
Ja myślę, że powinieneś napisać nam, jaki zwraca ci błąd exclamation.gif!. Kiedy w koncu to do was dotrze?
orson
witam ...

zainstaluj sobie nowszego mysql w domu

pozdrawiam
Sh4dow
  1. <?php
  2. $zapytanie = "SELECT * FROM kategorie 
  3. INNER JOIN kategorie_opis ON ( kategorie.id=kategorie_opis.kategorie_id and kategorie_opis.jezyk_kod ='$jezyk' ) "; 
  4. ?>


Sproboj nawias dla warunku ON. Rkingsmiley.png No i blad rzeczywiscie by sie przydal biggrin.gif zeby zobaczyc
Synaps
Moge sie założyć iż komunikat jaki Ci zwraca to błąd wynikający z metody porównań.
Od wersji 4tych MySQL istotne jest aby przy połączeniu z bazą zdeklarować metode porównań i poprawną strone kodową, np:

  1. SET CHARACTER SET latin2;
  2. SET collation_connection = latin2_general_ci;
adif
Faktycznie niedokładnie opisałem problem, przepraszam.

kwestia była po tej stronie, że:
mam krótki kod:
  1. <?php
  2.  
  3. $zapytanie=""; //jak wyżej
  4. $wynik = @mysql_query($zapytanie);
  5. if (!$wynik)
  6.  return false;
  7.  
  8. ?>

I błędem było to, że w tym momencie funkcja zwracała mi "false".

Jednakże muszę się wam wytłumaczyć:

ze względu na godzinę kiedy tworzyłem ten kod (byłem juz padnięty), nie zauważyłem jednej zasadniczej rzeczy:

na serwer jak wrzucałem pliki zapomniałem zmienić połączenia z poprawną bazą danych i dlatego funkcja nie widziała tych tabel jakie powinny być.

Zatem problem wyjaśnij się następnego dnia z rana.

dzięki wszystkim za chęć pomocy i pozdrawiam

P.S.
Synaps jakbyś mógł więcej napisać o co chodziło Ci z tymi metodami porównań byłbym wdzięczny, gdyż sam czegoś takiego nigdy nie stosowałem.

pozdro
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.