Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Left join i wybieranie losowe
qeuw
post 13.01.2005, 15:03:13
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 22.02.2004

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


Otóz próbuje napisac skrypt ktory wyswietla kategorie, i pokazuje jedno losowe zdjecie dla kazdej z kategorii.
Probowałem w taki sposob ale on nie działa.
  1. SELECT *
  2. FROM kategoria LEFT JOIN zdjecie ON (kategoria.kat_id=zdjecie.zdj_kat_id) OR ORDER BY rand() LIMIT 1
Go to the top of the page
+Quote Post
kszychu
post 13.01.2005, 16:12:43
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


A co robi tam ten niebieski or?


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
popbart
post 13.01.2005, 16:15:29
Post #3





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 22.04.2004
Skąd: Żoliborz

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


A po co tu left join? Przecież left join podstawia wartości null dla kategorii w której nie ma zdjęć. I 'or' też odpada winksmiley.jpg
  1. SELECT *
  2. FROM kategoria INNER JOIN zdjecie ON (kategoria.kat_id=zdjecie.zdj_kat_id)
  3. ORDER BY rand() LIMIT 1


--------------------
Visual Basic - kto by pomyślał :)
Go to the top of the page
+Quote Post
kszychu
post 13.01.2005, 16:17:12
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


Cytat(popbart @ 2005-01-13 16:15:29)
A po co tu left join? Przecież left join podstawia wartości null dla kategorii w której nie ma zdjęć.

Ano może właśnie po to: by wyświetlić też puste kategorie.


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
popbart
post 13.01.2005, 16:32:27
Post #5





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 22.04.2004
Skąd: Żoliborz

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


Cytat
Ano może właśnie po to: by wyświetlić też puste kategorie.

A tak w ogóle to powinno być tak tongue.gif
  1. SELECT * FROM(SELECT *
  2. FROM kategoria LEFT JOIN zdjecie ON (kategoria.kat_id=zdjecie.zdj_kat_id)
  3. ORDER BY rand()) AS tab GROUP BY tab.kat_id


Ten post edytował popbart 13.01.2005, 16:52:39


--------------------
Visual Basic - kto by pomyślał :)
Go to the top of the page
+Quote Post
qeuw
post 13.01.2005, 20:36:34
Post #6





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 22.02.2004

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


Niestety te kody nie wyświetlaja tegoco chce lub nie działaja.
Napisze jak ma to wygladac bo mogłem zle opisac sytuacje.
Mam galerie, znajduja sie w niej 3 tabele kategoria,podkategoria,zdjecie. W tabeli zdjecie znajduje sie odwolanie do id tabel: kategorii i podkategorii. Chce aby kazda kategoria miała jakies losowe zdjecie, przypadajace do kazdej z kategorii.
Go to the top of the page
+Quote Post
popbart
post 13.01.2005, 23:08:23
Post #7





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 22.04.2004
Skąd: Żoliborz

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


Mój select działa tylko na mysql > 4.1.x (subquery) sad.gif
Jeśli masz starszego to może tak prymitywniej
  1. <?php
  2. $query=&#092;"select * from kategoria\";
  3. $result=mysql_query($query);
  4.  
  5. for($i=0,$max=mysql_num_rows($result);$i<$max;$i++)
  6. {
  7.  $tab=mysql_fetch_assoc($result);
  8.  
  9.  echo $tab['id_kat'].&#092;" \";
  10.  
  11.  $query2=&#092;"select * from zdjecie where zdj_kat_id=\".$tab['id_kat'].\" order by rand() limit1\";
  12.  $result2=mysql_query($query);
  13.  $tab2=mysql_fetch_assoc($result);
  14.  
  15.  echo $tab['link'];
  16.  
  17. }
  18. ?>


--------------------
Visual Basic - kto by pomyślał :)
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: 19.07.2025 - 16:04