Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Select iz dve tabele i onda random

[es] :: MySQL :: Select iz dve tabele i onda random

[ Pregleda: 2929 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

bugsu
Vojvodina - Subotica

Član broj: 40006
Poruke: 381
77.46.177.*



+3 Profil

icon Select iz dve tabele i onda random28.07.2009. u 16:04 - pre 179 meseci
Nije bas ko sto naslov kaze ali je valjda najblize...drugo mi na pamet ne pada
a i ko zna al je ovo moguce

imam dve tabele

jedna je kategorije a druga je artikal

Kategorije: kat1 kat2 kat3 kat4 etc...
Artikal: sadrzi fields name, kat, id etc...


e sad dal mogu nekako da izvucem kategorije redom i za svaku kategoriju izvucem artikal koji spada u nju

npr

Kat1 = Artikli ID 1,3,9,14 etc
Kat2 = 19, 25, 28,
... etc


i to sve random artikli iz te kategorije...jel moguce tako nesto u jednom query
Say NO to pop culture!!!
Crno je uvek u modi....
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Select iz dve tabele i onda random28.07.2009. u 16:50 - pre 179 meseci
ako ti ne treba nista osim polja "kat" za kategoriju onda ima sve u tabeli artikal

Code:


SELECT kat, name FROM artikal GROUP BY kat;




ako ti treba onda

Code:


SELECT kategorija.*, artikal.* FROM artikal, kategorija WHERE artikal.kat = kategorija.kat GROUP BY kateogorija.kat;



ili stavis join using ..

a ako oces sada te rezultate da sortiras "po nicemu" dodas na kraj ORDER BY RAND();

dakle:

Code:


SELECT kategorija.*, artikal.* FROM kategorija JOIN arikal USING (kat)  GROUP BY kateogorija.kat ORDER BY RAND();



jasno ?
 
Odgovor na temu

bugsu
Vojvodina - Subotica

Član broj: 40006
Poruke: 381
77.46.177.*



+3 Profil

icon Re: Select iz dve tabele i onda random28.07.2009. u 17:31 - pre 179 meseci
u kakko ovo "jasno?" zvuci ko ono "dobices batina, jel ti jasno?" :D

back to topic ...

meni treba SVE artikle za tu kategoriju da izbaci ..a ovako mi izbaci samo jedan artikal za jednu kategoriju

jer svaki artikal ima sliku i ja sad ocu da mi prikaze sve te slike u toj kategoriji ...to mi je cilj ...
Say NO to pop culture!!!
Crno je uvek u modi....
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Select iz dve tabele i onda random28.07.2009. u 18:09 - pre 179 meseci
:D ... sorry, nije mi komunikacija sa ljudima jaca strana ... "jasno?" znaci "el jasno ili da objasnjavamo dalje" .. samo u manje reci :D



Citat:
meni treba SVE artikle za tu kategoriju da izbaci ..a ovako mi izbaci samo jedan artikal za jednu kategoriju


a sta oces random, artikle?

Code:

SELECT artikal.slika FROM arikal  ORDER BY artikal.kat, rand();


ovo ce ti sloziti slike po artiklima a unutar jednog artikla ce ih sloziti "random"?

el to bio zahtev?

ako ti nije bitno da ih randomizuje unutar jedne kategorije, izbaci ", rand()" ...
 
Odgovor na temu

bugsu
Vojvodina - Subotica

Član broj: 40006
Poruke: 381
77.46.177.*



+3 Profil

icon Re: Select iz dve tabele i onda random28.07.2009. u 18:13 - pre 179 meseci
ma sve je to ok ...znam ja select raditi random i sl ....
al ti si naveo sad samo za jedan artikal


meni treba SVE artikle i SVE kategorije u jedan query ...as to random ...pa ono da ne stoji uvek jedne te iste slike....tj slike od artikala...

razumes...
jedna stranica i imas listu kategorija i sliku za tu kategoriju e ta slika treba da izvuce odatle koji artikal spada u tu kategoriju pa ce tako scripta ucitati slikuzza taj artikal...
Say NO to pop culture!!!
Crno je uvek u modi....
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Select iz dve tabele i onda random28.07.2009. u 19:10 - pre 179 meseci
nista ja tebe ne kapiram ... a to mnogo nije dobro ...

Citat:

meni treba SVE artikle i SVE kategorije u jedan query


pogledaj query koji sam ti poslao pre ovog tvog posta:

Code:

SELECT artikal.slika FROM arikal  ORDER BY artikal.kat, rand();


ovaj query ce ti vratiti sliku za SVE artikle za SVE kategorije ... i to je jedan query ....

dakle potpuno isto kao to sto si napisao da oces ..

pritom ce ti slike sortirati tako da ce prikazati prvo sve slike iz prve kategorije, pa sve slike iz druge kategorije pa sve slike iz trece kategorije ... dok ce slike unutar jedne kategorije sortirati random...

ako oces da pored slike povuces i za koju kategoriju i kom artiklu pripada ... dodaj artikal.artikal_id i artikal.kat u select ..

e sad ... napisao si i ovo:
Citat:

jedna stranica i imas listu kategorija i sliku za tu kategoriju e ta slika treba da izvuce odatle koji artikal spada u tu kategoriju pa ce tako scripta ucitati slikuzza taj artikal...


ne razumem ... malopre si rekao da oces SVE artikle i SVE kategorije .. sad kazes da imas kategorije i JEDNU sliku a slika izvuce koji artikal ????? sorry, pricam 6 ljudskih i preko 60 programskih jezika .. ovaj tvoj mi bas ne ide?

aj sad da se ne bi igrali gluvih telefona, lepo uradis

Code:

mysql> SHOW CREATE TABLE `ime_tabele_sa_kategorijama`\G
mysql> SHOW CREATE TABLE `ime_tabele_sa_artiklima`\G


pa posaljes izlaz od toga ovde da vidimo na sta lice te dve tabele (i da li je uopste potrebno da koristis obe ili sve podatke imas u jednoj)

onda napisi spisak podataka koji ti treba ... dakle kako hoces da ti izgleda rezultat (od kojih polja iz kojih tabela oces da se sastoji) i onda ces lako da dobijes upit koji to generise ... posto ovako .. ja pretpostavljam na sta lice tabele, i pretpostavljam sta hoces da dobijes kao izlaz
 
Odgovor na temu

bugsu
Vojvodina - Subotica

Član broj: 40006
Poruke: 381
77.46.177.*



+3 Profil

icon Re: Select iz dve tabele i onda random28.07.2009. u 22:18 - pre 179 meseci
ma ja nisam dobro ispracao sta mi treba , sorry
jaoo mene kako sam ja ovo objasnio.....


Imam tabele kategoriju i artikal ...svaki artikal ima svoj ID i IDkategorije kojoj pripada


ja imam jednu stranicu gde ispise kategoriju i onda kolona ID ARTIKLA iz te kategorije....
i tako loop kategorija koliko ih ima (ako ih ima 10 onda 10puta ponavlja)
e sad posto ja nemam jednu kategoriju i jedan artikal ....meni treba da izvucem sve kategorije i ID ARTIKLA koji spada u tu kategoriju


Primer

Kategorija - Artikal ID

Voce - 2, 9, 8, 6 etc
Povrce - 56, 89, 114, etc


P.s prvo sam spominjao sliku ali sam zaboravio da se slika na serveru vodi pod ID-om artikla....
bazu i sl ne smem da dajem ne zato sto je top secret vec malo...khm :)
Say NO to pop culture!!!
Crno je uvek u modi....
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Select iz dve tabele i onda random28.07.2009. u 22:44 - pre 179 meseci
ne verujem da ti je struktura te dve tabele top secret :D .. al ajde ...

no .. i dalje ne kapiram tacno sta ti treba ...

primer:

Code:

mysql> create table `kat` (kat_id int auto_increment primary key, kat_name char(10)) engine=myisam;
Query OK, 0 rows affected (0.06 sec)

mysql> insert into `kat` (kat_name)  values ('voce'), ('povrce'), ('meso');
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from kat;
+--------+----------+
| kat_id | kat_name |
+--------+----------+
|      1 | voce     | 
|      2 | povrce   | 
|      3 | meso     | 
+--------+----------+
3 rows in set (0.00 sec)
mysql> create table `art` (art_id int auto_increment primary key, art_name char(10), kat_id int) engine=myisam;
Query OK, 0 rows affected (0.07 sec)

mysql> insert into `art` (art_name, kat_id) values ('jabuka', 1), ('kruska', 1), ('jagoda', 1), ('lubenica', 2), ('paprika', 2), ('svinja', 3), ('kokoska', 3), ('patka', 3);
Query OK, 8 rows affected (0.00 sec)
Records: 8  Duplicates: 0  Warnings: 0

mysql> select * from art;
+--------+----------+--------+
| art_id | art_name | kat_id |
+--------+----------+--------+
|      1 | jabuka   |      1 | 
|      2 | kruska   |      1 | 
|      3 | jagoda   |      1 | 
|      4 | lubenica |      2 | 
|      5 | paprika  |      2 | 
|      6 | svinja   |      3 | 
|      7 | kokoska  |      3 | 
|      8 | patka    |      3 | 
+--------+----------+--------+
8 rows in set (0.00 sec)





ok .. sada imamo primer .. da li primer odgovara tvojim tabelama ?

oces spisak svih artikala sa podacima ...

Code:

mysql> select kat_id as kategorija, art_id as arikl from art order by kat_id, rand();
+------------+-------+
| kategorija | arikl |
+------------+-------+
|          1 |     3 | 
|          1 |     2 | 
|          1 |     1 | 
|          2 |     5 | 
|          2 |     4 | 
|          3 |     7 | 
|          3 |     8 | 
|          3 |     6 | 
+------------+-------+
8 rows in set (0.01 sec)


dakle - ono sto sam ti vec napisao dvaput ...

oces to isto - samo sa imenima ... onda ti treba join posto su imena malo tamo malo vamo ..

Code:

mysql> select kat.kat_name as kategorija, art.art_name as artikl from kat join art using (kat_id) order by kat_id;
+------------+----------+
| kategorija | artikl   |
+------------+----------+
| voce       | jabuka   | 
| voce       | kruska   | 
| voce       | jagoda   | 
| povrce     | lubenica | 
| povrce     | paprika  | 
| meso       | svinja   | 
| meso       | kokoska  | 
| meso       | patka    | 
+------------+----------+
8 rows in set (0.00 sec)


oces i id-ove?

Code:

mysql> select kat.kat_name as kategorija, kat.kat_id, art.art_name as artikl, art.art_id from kat join art using (kat_id) order by kat_id;
+------------+--------+----------+--------+
| kategorija | kat_id | artikl   | art_id |
+------------+--------+----------+--------+
| voce       |      1 | jabuka   |      1 | 
| voce       |      1 | kruska   |      2 | 
| voce       |      1 | jagoda   |      3 | 
| povrce     |      2 | lubenica |      4 | 
| povrce     |      2 | paprika  |      5 | 
| meso       |      3 | svinja   |      6 | 
| meso       |      3 | kokoska  |      7 | 
| meso       |      3 | patka    |      8 | 
+------------+--------+----------+--------+
8 rows in set (0.00 sec)


oces potpuno beskoristan izlaz koji lici na ono sto si napisao u prethodnoj poruci:
Code:

mysql> select kat.kat_name as kategorija, group_concat(art.art_name) as artikli from kat join art using (kat_id) group by kat_id;
+------------+----------------------+
| kategorija | artikli              |
+------------+----------------------+
| voce       | jabuka,kruska,jagoda | 
| povrce     | lubenica,paprika     | 
| meso       | svinja,kokoska,patka | 
+------------+----------------------+
3 rows in set (0.00 sec)

mysql> select kat.kat_name as kategorija, group_concat(art.art_id) as artidovi from kat join art using (kat_id) group by kat_id;
+------------+----------+
| kategorija | artidovi |
+------------+----------+
| voce       | 1,2,3    | 
| povrce     | 4,5      | 
| meso       | 6,7,8    | 
+------------+----------+
3 rows in set (0.01 sec)


eko ti treba nesto drugo, aj napravi izlaz koji oces da dobijes
 
Odgovor na temu

bugsu
Vojvodina - Subotica

Član broj: 40006
Poruke: 381
79.101.141.*



+3 Profil

icon Re: Select iz dve tabele i onda random30.07.2009. u 10:05 - pre 179 meseci
joj sad sam se i ja pogubio ... ostavicu par dana sa strane dok mi se ne slegne u glavi potpuno....
hvala na trudu ....


a ja da ne otvaram temu (da ne budem "pain in ass" na ovom forumu)

jos jedna problem


tretnuno imam polje
vLength varchar(250) latin1_general_ci No
u kojoj je vrednost npr. 15:54 (vreme je upitanju)

i traba da ga prebacim u polje
duration float No
u kojoj je vrednost npr. 126.46 ( ta vrednost puta 60 daje minute koje ispisuje scripta)


5k artikla i kako sve to prebaciti ? da pomnozim prvo pa tek onda polje da prebacujem u FLOAT?

UPDATE tabela SET CONCAT(vLenght*60)

ovo bas ne ide ...al na tako neki fazon?
Say NO to pop culture!!!
Crno je uvek u modi....
 
Odgovor na temu

stevs986
Nikolic Sladjan
Senior Software Developer
Alterset d.o.o
Beograd

Član broj: 121154
Poruke: 140
*.dynamic.sbb.rs.



+4 Profil

icon Re: Select iz dve tabele i onda random30.07.2009. u 17:21 - pre 179 meseci
Ne znam da li te najbolje razumem, ali zasto ne bi odradio ovako nesto:


UPDATE tabela SET vLength = CAST(vLenght as decimal) *60
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Select iz dve tabele i onda random30.07.2009. u 21:09 - pre 179 meseci
Citat:
bugsu: joj sad sam se i ja pogubio ... ostavicu par dana sa strane dok mi se ne slegne u glavi potpuno....
hvala na trudu ....


nema na cemu .. osnovni problem je sto ti nisi izdefinisao sta ti tacno treba, zato ne postavljas pitanje kako treba i zato ne dolazis do resenja ... uzmi i popuni 2 tabele podacima i napravi tabelu sa rezultatom pa onda odatle napravi kako treba da izgleda upit ..

Citat:

a ja da ne otvaram temu (da ne budem "pain in ass" na ovom forumu)


nisam citao pravilnik ( sta cu, mrzi me ) ali ako tamo ne pise da treba jedno pitanje po temi - trebalo bi :D .. mnogo je preglednije ako ima jedno pitanje po temi .. uopste nisi "pain in the butt" ako postavljas pitanja, tome forum sluzi zar ne?

Citat:

tretnuno imam polje
vLength varchar(250)latin1_general_ciNo
u kojoj je vrednost npr. 15:54 (vreme je upitanju)

i traba da ga prebacim u polje
duration float No
u kojoj je vrednost npr. 126.46 ( ta vrednost puta 60 daje minute koje ispisuje scripta)


5k artikla i kako sve to prebaciti ? da pomnozim prvo pa tek onda polje da prebacujem u FLOAT?

UPDATE tabela SET CONCAT(vLenght*60)

ovo bas ne ide ...al na tako neki fazon?


auuuuuuuuuuuuuuuuuuuu

prvo ces morati sa alter table da dodas jednu integer kolonu, onda da joj dodelis vrednost za sve slogove i na kraju da sa sledecim alterom izbacis tu char kolonu... obrati paznju da su to "blocking" operacije koje umeju da potraju na velikim tabelama - zahtevaju 1 - 2 puta prostora na disku koliko zauzima tabela ...

teoretski nesto tipa

Code:

update `t1` set nova_kolona = 
CONVERT( SUBSTRING_INDEX(stara_kolona, ':', 1) , UNSIGNED INTEGER) * 60 +
CONVERT( SUBSTRING_INDEX(stara_kolona, ':', -1) , UNSIGNED INTEGER);


ce da odredi deo sa racunanjem nove vrednosti ...

ako hoces bas decimal onda samo malo izmeni racunicu, al to ti je to ..

 
Odgovor na temu

bugsu
Vojvodina - Subotica

Član broj: 40006
Poruke: 381
79.101.141.*



+3 Profil

icon Re: Select iz dve tabele i onda random30.07.2009. u 21:54 - pre 179 meseci
ok ...ako gleda neko od moderatora i ako ga nije mrsko nek izmesti poruke u posebnu temu ....


uradio sam ovo kao sto je mr. bogdan rekao i odlicno je ispalo ...tabela je "lagana" tako da niej bilo problema ....


hvala :) a za ovo drugo(tj prvo) se javljam za koji dan kad ja sam sa sobom rascistim :D

Say NO to pop culture!!!
Crno je uvek u modi....
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Select iz dve tabele i onda random30.07.2009. u 23:52 - pre 179 meseci
Citat:
bugsu: kad ja sam sa sobom rascistim :D


kada god imas problem, probaj da postavis pitanje tako da tvoj kolega, drug, zena, komsinica .. mogu da razumeju tacno sta pitas, bez obzira da li umeju da ti daju resenje. Samim tim sto postavis pitanje pravilno - docices u 90% slucajeva do resenja. SQL je prilicno lagan jezik, nema mnogo filozofije, tako da - ako znas sta hoces da dobijes, u 90% slucajeva resenje je vrlo jednostavno... e sad, da bi to resenje bilo "najbolje moguce za odredjeni sql server" radis optimizaciju upita koja nije ista za mysql, pgsql, oracle, ms sql, innobase, sybase, sql lite ... i mozes da implementiras koji trik ili dva ... ali pre svega moras da razumes svoj problem kako bi mogao da postavis pitanje... onda posle toga sve bude lako :)

 
Odgovor na temu

[es] :: MySQL :: Select iz dve tabele i onda random

[ Pregleda: 2929 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.