IT NEWS PC REVUE PC FORUM FreeBSDInternet time: @353
Obsah fóra
Pravidlá  •  Kontakt  •  Prihlásenie  •  Registrácia

Inštalatéri

Opravy, výmeny, prerábky Všetky vodoinštalačné práce www.instalateri.sk

Spevňujúci telový olej

Novinka - spevňujúci olej Q10 plus. Pre hladkú a krásnu pokožku. www.NIVEA.sk

Tablety, klávesnice a iné

Asi najlacnejšie.Záruka i servis. Hľadáme odberateľov, dodavateľov, MLM www.akciacena.sk

5 zázračných jedál

Ktoré vám pomôžu ihneď schudnúť rýchlo, jednoducho a trvale www.news2channel.net

Byty v Bratislave - Manhattan

Využite výrazné zľavy až 19 000 € Akciová ponuka platí len do 31. mája! www.americkebyvanie.sk

mysql-vyhladavanie

Zaslať odpoveď
AutorSpráva
lukas15
Užívateľ
Užívateľ

Založený: 10.11.2011
Príspevky: 16

PríspevokZaslal: Št 10.11.11 16:22Odpovedať s citátomNávrat hore

Mám takýto problém: v databáze mám dve tabuľky napr. tabuľka A tá má stĺpce (a_ id , zlozenie). Druhá tabuľka napr. B má stĺpce (b_ id, cislo, a_id) v tejto tabuľke je 10 čísel , ktoré majú rovnaké A_id (teda patria k jednému zlozeniu z tabuľky A). Mám formulár do ktorého zadám: zloženie, a
číslo1, číslo2, číslo3. Ako mám spraviť , aby mi vypísalo dané zloženie len ak sa zhodujú všetky 3 zadané čísla s číslami v stĺpci (cislo) v tabuľky B?
Zobraziť informácie o autoroviOdoslať súkromnú správu
GoodWill
Skúsený užívateľ
Skúsený užívateľ

Založený: 29.10.2007
Príspevky: 1000
Bydlisko: Bratislava

PríspevokZaslal: Št 10.11.11 17:19Odpovedať s citátomNávrat hore

Otazne je, ci chces zlozenie z tabulky A vybrat vtedy ak
1) zadane hodnoty vo formulary splnaju vsetky cisla z tabulky B (cize ak je v tabulke B pre zlozenie 10 hodnot, vo formulari musi byt tiez 10 hodnot)
2) zadane hodnoty vo formulary su priradene len pre jedno zlozenie, cize vsetky cisla z formulara maju v tabulke B rovnaku hodnotu a_id (a envadi ze vo formulari su len 3 cisla, a v tabulke B mas pre jedno zlozenie 10 hodnot)

V prvom pripade mas zlu strukturu tabuliek. Viac by sa hodilo keby si namiesto 10 riadkov mal len jeden, v ktorom by boli ciselne hodnoty naskladane vedla seba zoradene podla hodnoty a oddelene napr medzerou.

V druhom pripade to mozes skusit takto
kód:
SELECT *
  FROM A
  WHERE a_id = ( SELECT a_id
                   FROM B
                   WHERE cislo IN (hodnoty z formulara)
                   GROUP BY a_id
                   HAVING MIN(a_id) = MAX(a_id)  )

_________________
Koľko SEO expertov je potrebných na výmenu žiarovky výmena žiaroviek žiarovka nové žiarovky úsporné žiarovky sexy žiarovka?
Zobraziť informácie o autoroviOdoslať súkromnú správuZobraziť autorove WWW stránky
lukas15
Užívateľ
Užívateľ

Založený: 10.11.2011
Príspevky: 16

PríspevokZaslal: Pi 11.11.11 12:40Odpovedať s citátomNávrat hore

Vďaka funguje to. Bol to ten druhý prípad, tých 10 čísel som uviedol len ako príklad môže ich byť 1,2,...n.

// pridané po 18 hodinách 2 minútach od posledného príspevku

Ešte jeden dotaz. Ako to mám spraviť aby mi výpísalo len ten záznam, ktorý obsahuje všetky 3 zadané čísla, lebo takto mi ho vypíše aj keď sa zhoduje len v jednom čísle. Skúšal som tam dať AND, ale nefunguje to.

kód:
SELECT *
  FROM A
  WHERE a_id = ( SELECT a_id
                   FROM B
                   WHERE cislo IN ($c1 AND $c2 AND $c3)
                   GROUP BY a_id
                   HAVING MIN(a_id) = MAX(a_id)  )
Zobraziť informácie o autoroviOdoslať súkromnú správu
GoodWill
Skúsený užívateľ
Skúsený užívateľ

Založený: 29.10.2007
Príspevky: 1000
Bydlisko: Bratislava

PríspevokZaslal: Pi 11.11.11 15:55Odpovedať s citátomNávrat hore

Bez ANDu, len treba rozsirit podmienku v HAVING o konkretny pocet hodnot
kód:
SELECT *
  FROM A
  WHERE a_id = ( SELECT a_id
                   FROM B
                   WHERE cislo IN ($c1, $c2, $c3)
                   GROUP BY a_id
                   HAVING MIN(a_id) = MAX(a_id)
                      AND count(*) = 3)

_________________
Koľko SEO expertov je potrebných na výmenu žiarovky výmena žiaroviek žiarovka nové žiarovky úsporné žiarovky sexy žiarovka?
Zobraziť informácie o autoroviOdoslať súkromnú správuZobraziť autorove WWW stránky
coldak
Skúsený užívateľ
Skúsený užívateľ

Založený: 29.10.2008
Príspevky: 936

PríspevokZaslal: Pi 11.11.11 16:18Odpovedať s citátomNávrat hore

GoodWill napísal:
Bez ANDu, len treba rozsirit podmienku v HAVING o konkretny pocet hodnot
kód:
SELECT *
  FROM A
  WHERE a_id = ( SELECT a_id
                   FROM B
                   WHERE cislo IN ($c1, $c2, $c3)
                   GROUP BY a_id
                   HAVING MIN(a_id) = MAX(a_id)
                      AND count(*) = 3)


este to fixni. co ak bude mat v tabulke B 3 krat to iste cislo ktore bude tiez vyhovovat podmienke IN ($c1, $c2, $c3) ? priklad
$c1 = 1
$c2 = 2
$c3 = 3
a v tabulke b bude mat pre jedno a_id 3* hodnotu 1 .

a tiez by ma zaujimalo naco je tam
kód:
HAVING MIN(a_id) = MAX(a_id)
?
Zobraziť informácie o autoroviOdoslať súkromnú správu
GoodWill
Skúsený užívateľ
Skúsený užívateľ

Založený: 29.10.2007
Príspevky: 1000
Bydlisko: Bratislava

PríspevokZaslal: Pi 11.11.11 16:55Odpovedať s citátomNávrat hore

Nepocital som s tym ze by zlozenie zostavy tvorili rovnake hodnoty, ale ok, namiesto count(*) treba dat count(DISTINCT cislo)

min(a_id) = max(a_id) je tam preto, aby sme vybrali prave tu jednu zostavu ktora zlozeniu vyhovuje. Pravodu je ze zlozeniu moze vyhovovat zostav viac a kedze uz tam mame ten count, tak staci ak v havingu zostane ten. Potom samozrejme WHERE a_id IN

_________________
Koľko SEO expertov je potrebných na výmenu žiarovky výmena žiaroviek žiarovka nové žiarovky úsporné žiarovky sexy žiarovka?
Zobraziť informácie o autoroviOdoslať súkromnú správuZobraziť autorove WWW stránky
Zobraziť príspevky z predchádzajúcich:    
Zaslať odpoveď
Nemôžete pridávať nové témy do tohto fóra.
Nemôžete odpovedať na témy v tomto fóre.
Nemôžete upravovať svoje príspevky v tomto fóre.
Nemôžete mazať svoje príspevky v tomto fóre.
Nemôžete hlasovať v tomto fóre.

Powered by phpBB 2.x.x © 2005 - 2012 PCforum, webhosting by WebSupport, edited by JanoF

SEO - optimalizácia pre vyhľadávače

Freebsd