Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

kako limitirati select u zavisnosti od vrednosti polja?

  • 10 odgovora
  • 4.629 pregleda

Najnovija ↓

kako limitirati select u zavisnosti od vrednosti polja? 19.05.2007. u 11:42 · pre 236 meseci #1
Pokusacu da pitam prema primeru:

U jednoj tabeli imam kolonu 'slova' u kojoj se ponavljaju vrednosti:
- 'a' 4 puta
- 'b' 3 puta
- 'c' 1 put

___
| a |
| a |
| a |
| a |
| b |
| b |
| b |
| c |


Potrebno mi je da selectujem rezultat iz tabele ali tako da se uzima iz pomenute kolone 'slova' od svake vrednosti po najvise 2 reda.
Znaci posle takvog selecta bi trebao da dobijem ovaj rezultat:

___
| a |
| a |
| b |
| b |
| c |

Kako to moze da se izvede u selectu?
Potpis
Aukcije, www.Odbrojavanje.com
Aukcija može biti osvojena jeftino - za 30 sekundi a 6 dinara!
Re: kako limitirati select u zavisnosti od vrednosti polja? 22.05.2007. u 12:28 · pre 236 meseci #5
Da, video sam dva resenja i oba su mi neupoterbljiva:

1. sa inner join (problem je sto je potrebno N innner yoin-a ako imam je broj ogranicenih kolona za citanje N, i to je za mene previse jer su mi ogranicenja i po 1000)

2. je sa subselectom (problem je sto mi se skript ovde izvrsava nenormalno dugo - ne znam ni sam koliko bi trajao jer imam preko 300.000 kolona, a i jede momoriju na hard disku)

Interesuje me da li se to moze nekako resiti sa upotrebmo IF uslova, variabli...? Moze da bude napisan i MySQL skript, ne mora da bude sve u jednom queriju. Nisam expert za Mysql pa mi je ovo dosta komplikovano, a potrebno mi je.

Molim za pomoc, ako neko zna!
Potpis
Aukcije, www.Odbrojavanje.com
Aukcija može biti osvojena jeftino - za 30 sekundi a 6 dinara!
Re: kako limitirati select u zavisnosti od vrednosti polja? 23.05.2007. u 10:41 · pre 236 meseci #6
Code:

SELECT DISTINCT(slova) AS slova
  FROM jedna_tabela
 UNION ALL
SELECT DISTINCT(slova) AS slova
  FROM jedna_tabela
 GROUP BY slova
HAVING COUNT(slova) > 1
 ORDER BY slova
Potpis
"The best code is no code at all."
- Zidar (ES član)
"Biggest obstacle to learning
SQL is unlearning procedural
programming."
- Joe
Celko
"Minimize code, maximize data."
- A. Neil Pappalardo
Re: kako limitirati select u zavisnosti od vrednosti polja? 23.05.2007. u 22:05 · pre 236 meseci #7
Molim za pomoc! Nazalost ne znam sta radi predhodni upit i kako se koristi.
Molim vas da mi pomognete kako da ovaj poslednji uput primenim na situaciju opisanu u prvoj poruci koju sam napisao?

Paznja! U stvarnosti ne treba da dobijem vracene po dve kolone za istu vrednost, nego po 1000 kolona za instu vrednost.

Ne znam da li ovaj predhodni upit to dozvoljava i kako?
Potpis
Aukcije, www.Odbrojavanje.com
Aukcija može biti osvojena jeftino - za 30 sekundi a 6 dinara!
Re: kako limitirati select u zavisnosti od vrednosti polja? 07.06.2007. u 20:07 · pre 236 meseci #9
Posle malo testiranja zakljucio sam:

1. SUBSELECT (koji je ovde navedeno, i za koji su dati linkovi) ne radi.
Jednostavno za moju tabelu od 4000 redova pri primeni da se selektuje najvise 50 istih - ne radi.
Ako sam ga dobro primenio:

Code:

SELECT e1.imena FROM imena AS e1
  WHERE (50 > (select count(*) from imena e2
                    WHERE e2.id_mesta=e1.id_mesta))


Znaci hteo sam da iz svakog mesta selektujem po najvise 50 imena.

2. DISTINCT koji je jednom predlozen ne znam da upotrebim
u mom slucaju kada se treba selektovati najvise 50 istih redova

Molim vas,
meni nije neophodno da mi ovaj posao bude odradjen sa jednim QUERIJEM, vec slobodno mozete predloziti
i SQL skriptu. Znaci posto imam 5.0 Mysql, moze i LOOP metod i sl.

Molim vas ako imate neka druga resenja da mi pomognete?
Ovo mi je neophodno, a ne razumem se toliko da to mogu sam da uradim.
Potpis
Aukcije, www.Odbrojavanje.com
Aukcija može biti osvojena jeftino - za 30 sekundi a 6 dinara!
Re: kako limitirati select u zavisnosti od vrednosti polja? 08.06.2007. u 12:06 · pre 236 meseci #10
>


Code:

SELECT e1.imena FROM imena AS e1
 WHERE (50 > (select count(*) from imena e2
                   WHERE e2.id_mesta=e1.id_mesta))


Code:


SELECT  e1,imena,  COUNT(*) AS broj FROM imena AS e1 GROUP BY 
e1.id_mesta, HAVING broj<=50 ;

Re: kako limitirati select u zavisnosti od vrednosti polja? 08.06.2007. u 22:32 · pre 236 meseci #11
Ni ova dva upita predhodna ne rade kako treba, pogotovo ovaj drugi jer on vraca samo po jedano ime i to ne iz onih mesta koje imaju vise od 50 imena.

Znaci da ponovim,

teba mi upit koji ce da mi vrati iz svakog mesta po najvise pedeset imena.

Ima li resenja?
Potpis
Aukcije, www.Odbrojavanje.com
Aukcija može biti osvojena jeftino - za 30 sekundi a 6 dinara!
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme