[ Príspevkov: 17 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 22.03.07
Prihlásený: 04.07.14
Príspevky: 344
Témy: 97 | 97
NapísalOffline : 02.11.2008 21:18 | Omedzeny vyber z tabuliek

Nazdarek. Potreboval by som poradit. Mam spravene dve tabulky. V tabulke1 mam id, mena, krajinu uzivatelov atd. a v tabulke2 mam id_uzivatela (zhodne s ID z tabulky1) , id_albumu a pod. No a potrebujem spravit vyber z tabuliek tak, aby mi pri zadani podmienky napr. krajina vybralo z tabulky2 id_albumu, ale tak aby mi od kazdeho uzivatela vybralo len jeden album (posledny, napr.podla casu): Skusal som to takto:

Kód:
select tabulka1.id, tabulka1.krajina, tabulka2.id_uzivatela, COUNT(tabulka2.id_albumu) AS numrows
from tabulka1 where id_uzivatela in (select id_uzivatela from tabulka2 group by id_uzivatela having count(*) <=1)
left join tabulka2 on rtabulka1.id = tabulka2.id_uzivatela


Lenze takto to vobec nefunguje. Totiz potrebujem mat zachovane to COUNT(id_albumu) AS numrows kvôli strankovaniu. Jedniny sposôb ako mi to islo bolo:
Kód:
select COUNT(id_albumu) AS numrows from tabulka2 where id_uzivatela in (select id_uzivatela from tabulka2 group by id_uzivatela having count(*) <=1)


Lenze ako nahle som k tomu pripojil dalsiu tabulku, tak to prestalo fungovat. Neviete mi niekto poradit ako by mal spravne vyzerat ten zapis?


Offline

Skúsený užívateľ
Skúsený užívateľ
Omedzeny vyber z tabuliek

Registrovaný: 09.07.08
Prihlásený: 17.01.15
Príspevky: 1586
Témy: 96 | 96
NapísalOffline : 03.11.2008 8:19 | Omedzeny vyber z tabuliek

from tabulka1 where ... left join? Pozri si syntax select, takto to určite nespravíš
where až na koniec v tomto prípade


_________________
neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 22.03.07
Prihlásený: 04.07.14
Príspevky: 344
Témy: 97 | 97
Napísal autor témyOffline : 03.11.2008 10:47 | Omedzeny vyber z tabuliek

rooobertek..no ja som vychadzal z clanku na linuxe:
http://www.linuxsoft.cz/article.php?id_article=882

Mozno som to zle pochopil...Ale aj ked som dal where na koniec, tak to nejde.. :(


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 04.04.07
Prihlásený: 20.11.17
Príspevky: 531
Témy: 34 | 34
Bydlisko: Bratislava
NapísalOffline : 03.11.2008 10:59 | Omedzeny vyber z tabuliek

Kód:
select t1.id, t1.krajina, t2.id_uzivatela, COUNT(t2.id_albumu) AS numrows from t1 left join t2 on t1.id = t2.id_uzivatela where id_uzivatela in (select id_uzivatela from t2 group by id_uzivatela having count(*) <=1)


myslel si to takto nejak? neskusal som to, ale join musis mat pred where.


_________________
CPU: AMD Phenom II 940 QUAD X4 BE AM2+, chladic: Arctic Cooling Freezer 64 Pro, RAM: 4GB DDR2 800MHz PC6400, MB: M2N-E SLI, VGA: RX 4870 GAINWARD HD4870 1GB, HDD: WD 1TB, Zdroj: CORSAIR 750W TX
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 22.03.07
Prihlásený: 04.07.14
Príspevky: 344
Témy: 97 | 97
Napísal autor témyOffline : 03.11.2008 11:26 | Omedzeny vyber z tabuliek

No skusil som to takto, ale stale mi vypisuje:
Error, query failed Neviem v com by mohol byt problem...
Ale rozmyslal som, ze to spravim inac..Len neviem ci to je aj spravne.. V podstate ja pre strankovanie potrebujem zistit, kolko "riadkov" sa mi vrati z Tabulky. Takze Select by som urobil takto:

Kód:
$result  = mysql_query("select t1.meno, t1.krajina, t2.id_albumu from t2 join (select id_uzivatela, max(cas) as cas
from t2 group by id_uzivatela) as nejvyssi on t2.id_uzivatela = nejvyssi.id_uzivatela and t2.cas = nejvyssi.cas
left join t1 on t2.id_uzivatela = t1.id");


A potom by som len vlastne na strankovanie pouzil len:
Kód:
$riadkov = mysql_num_rows($result);
$maxPage = ceil($riadkov/$rowsPerPage);


Takto som to aj skusal a ide to, len neviem, ci je to aj spravne. :roll:


Offline

Skúsený užívateľ
Skúsený užívateľ
Omedzeny vyber z tabuliek

Registrovaný: 09.07.08
Prihlásený: 17.01.15
Príspevky: 1586
Témy: 96 | 96
NapísalOffline : 03.11.2008 12:25 | Omedzeny vyber z tabuliek

naozaj si pozri syntax selectu, pozri príručku mysql.
Máš tam 2x FROM. To už načo?


_________________
neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 22.03.07
Prihlásený: 04.07.14
Príspevky: 344
Témy: 97 | 97
Napísal autor témyOffline : 05.11.2008 13:11 | Omedzeny vyber z tabuliek

No to som uz opravil/vyriesil.. Ale teraz mam trocha iny problem. Potreboval by som si urobit funkciu, ktora mi vypise data z tabulky. Ide o nazvy albumov, ktorych moze byt viac od jedneho uzivatela. Mam nieco take:

Kód:
function vypis($r)
{
 while ($udaje = mysql_fetch_array($query))
{
$r=$udaje['nazov'];
echo "$r";
$r++;
}
}
vypis ($r);


Lenze vypisuje mi chybove hlasenie:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL ..
A neviem ako to nahradit, aby mi to jednoducho vypisalo v tej funkcii vsetky nazvy.. Neviete mi poradit??


Offline

Skúsený užívateľ
Skúsený užívateľ
Omedzeny vyber z tabuliek

Registrovaný: 09.07.08
Prihlásený: 17.01.15
Príspevky: 1586
Témy: 96 | 96
NapísalOffline : 05.11.2008 13:51 | Omedzeny vyber z tabuliek

fetchuje sa vysledok, nie query.
Kód:
$query = "SELECT * FROM tabulka";
$result = mysql_query($query);
while($row = mysql_fetch_assoc($result)){
echo $row['stlpec'];
}


_________________
neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 22.03.07
Prihlásený: 04.07.14
Príspevky: 344
Témy: 97 | 97
Napísal autor témyOffline : 05.11.2008 14:28 | Omedzeny vyber z tabuliek

No aj ked som to upravil takto tak, aj tak mi to vypisuje chybove hlasenie.
Jednoducho, akonahle dam do funkcie :
Kód:
function vypis()
{
 while ($udaje = mysql_fetch_assoc($result))
{
echo $udaje['stlpec'];
}
}


akykolvek argument(mysql_fetch_assoc,mysql_fetch_array,mysql_fetch_row a pod.), tak mi to vypise chybu..Ako mam teda napisat tu funkciu, aby mi vypisalo vsetky nazvy z tabulky?


Offline

Skúsený užívateľ
Skúsený užívateľ
Omedzeny vyber z tabuliek

Registrovaný: 29.10.07
Prihlásený: 12.06.17
Príspevky: 1408
Témy: 28 | 28
Bydlisko: Bratislava
Vek: 36
NapísalOffline : 05.11.2008 14:34 | Omedzeny vyber z tabuliek

skus trochu postudovat zaklady php. problem bude ze v tej funkcii nevidis $result. posielas ho tam? je to globalna premenna?


_________________
PC: OS: Windows 10 (64bit) CPU: INTEL Core i5-4440 GPU: ASUS ATI R9280X RAM: Kingston 8GB DDR3 1600MHz MB: MSI B85-G43 Gaming HDD: Seagate 1TB HDD Barracuda SSD: SAMSUNG 120GB HDD 840 EVO CASE: COOLERMASTER N400
Mobil: OS: Android 4.4.2 Model: LG G2 D802 16GB
Offline

Skúsený užívateľ
Skúsený užívateľ
Omedzeny vyber z tabuliek

Registrovaný: 09.07.08
Prihlásený: 17.01.15
Príspevky: 1586
Témy: 96 | 96
NapísalOffline : 05.11.2008 14:39 | Omedzeny vyber z tabuliek

function vypis() {
global $result;
...


_________________
neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 22.03.07
Prihlásený: 04.07.14
Príspevky: 344
Témy: 97 | 97
Napísal autor témyOffline : 05.11.2008 14:40 | Omedzeny vyber z tabuliek

OK..Tak tu dam cely kod:
Prvykrat som to skusal takto:


Kód:
$query = "select nazov from tabulka where id_uzivatela='{$zaznam['id_uzivatela']}'";
$result = mysql_query($query);
function pokus()
{
while($row = mysql_fetch_assoc($result)){

echo $row['nazov_albumu'];
}
}
 pokus();


Vypisalo mi to chybove hlasenie.

Druhykrat som to cele dal do funkcie:
Kód:
function pokus()
{
$query = "select nazov from tabulka where id_uzivatela='{$zaznam['id_uzivatela']}'";
$result = mysql_query($query);
while($row = mysql_fetch_assoc($result)){

echo $row['nazov_albumu'];
}
}
 pokus();

Takto to uz nevypisalo vobec nic...


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 17.10.08
Prihlásený: 15.12.08
Príspevky: 24
Témy: 4 | 4
NapísalOffline : 05.11.2008 20:08 | Omedzeny vyber z tabuliek

niesom si isty ale takto by to neslo ?

Kód:
function pokus($result)
{
while($row = mysql_fetch_assoc($result)){

echo $row['nazov_albumu'];
}
}
echo pokus($result);


Offline

Skúsený užívateľ
Skúsený užívateľ
Omedzeny vyber z tabuliek

Registrovaný: 09.07.08
Prihlásený: 17.01.15
Príspevky: 1586
Témy: 96 | 96
NapísalOffline : 05.11.2008 22:13 | Omedzeny vyber z tabuliek

newboy, v tom druhom pokuse pre zmenu nemáš $zaznam, daj si global $zaznam.
Pomohlo by ti, keby si si nastavil niekde na začiatku error_reporting(E_ALL|E_STRICT), ale pozor, keď to nasadíš naostro na web, tak to musí ísť preč


_________________
neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 22.03.07
Prihlásený: 04.07.14
Príspevky: 344
Témy: 97 | 97
Napísal autor témyOffline : 06.11.2008 13:19 | Omedzeny vyber z tabuliek

rooobertek..Mal si pravdu s tym $zaznam. Jednoducho mi ta funkcia nebrala v dopyte podmienku
Kód:
where id_uzivatela= $zaznam['id_uzivatela']
. Riesenie bolo jednoduche. stacilo do funkcie pridat $zaznam :D Cize na zaciatok dat :
Kód:
function pokus($albumy, $zaznam)
{  ......
}


Ja neviem ci to je len moj problem, alebo to je nepisane pravidlo pre vsetkych, ale vzdy ked mi vyskoci nejaky problem, tak nakoniec zistim, ze je to len mala/banalna chyba ktora vznikla viac menej mojou nepozornostou. Napr. Aj teraz. Keby som si hned na zaciatku overil, ci mi prenasa podmienku where id_uzivatela= $zaznam , nemusel som zabit takmer cely den a vypisovat sem do fora.. :loony:


Offline

Skúsený užívateľ
Skúsený užívateľ
Omedzeny vyber z tabuliek

Registrovaný: 09.07.08
Prihlásený: 17.01.15
Príspevky: 1586
Témy: 96 | 96
NapísalOffline : 06.11.2008 15:19 | Omedzeny vyber z tabuliek

To je ten lepší prípad. Horšie je ak ti vyhodí nejakú všeobecnú chybu ako internal server error 500 a rieš si... zistíš, ako spraviť na to nejakú záplatu, ale netušíš, prečo sa to tak deje


_________________
neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.02.07
Prihlásený: 21.02.10
Príspevky: 3991
Témy: 96 | 96
NapísalOffline : 06.11.2008 16:34 | Omedzeny vyber z tabuliek

ja osobne odporúčam pri vypisovaní chýb:
pokiaľ píše Internal Error 500 - skontrolovať bodkočiarky, zátvorky, premenné
Pokiaľ však sa nerobí to čo má ... tak skúšam vypísať konkretné reťazce alebo prememnné

keď sa aj tak nedarí tak pomáha klasické komentovanie ...


 [ Príspevkov: 17 ] 


Omedzeny vyber z tabuliek



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

vyber z dvoch tabuliek

v Databázy

9

403

05.01.2010 20:22

rooobertek

V tomto fóre nie sú ďalšie neprečítané témy.

Vyber z 2 tabuliek

v Databázy

7

745

26.01.2011 15:30

emer

V tomto fóre nie sú ďalšie neprečítané témy.

vyber z dvoch tabuliek

v Databázy

2

561

27.02.2011 16:57

coldak

V tomto fóre nie sú ďalšie neprečítané témy.

Vyber uzivatelov z 2 tabuliek

v Databázy

2

131

30.11.2012 16:32

zaciatocnik

V tomto fóre nie sú ďalšie neprečítané témy.

Zoradeny vyber z dvoch tabuliek naraz

v Databázy

3

138

06.02.2014 7:02

JanoF

V tomto fóre nie sú ďalšie neprečítané témy.

Vyber poslednych zaznamov z 2 tabuliek

v Databázy

2

119

13.04.2013 17:02

zaciatocnik

V tomto fóre nie sú ďalšie neprečítané témy.

porovnanie tabuliek

v Databázy

2

517

06.02.2009 12:30

awtt

V tomto fóre nie sú ďalšie neprečítané témy.

Velkost tabuliek

v Databázy

1

229

22.11.2011 13:09

GoodWill

V tomto fóre nie sú ďalšie neprečítané témy.

Prepojenie tabuliek

v Databázy

2

640

01.02.2010 13:35

Antuanet

V tomto fóre nie sú ďalšie neprečítané témy.

Prepojenie tabuliek

v Databázy

3

876

25.02.2008 16:27

stenley

V tomto fóre nie sú ďalšie neprečítané témy.

spojenie tabuliek

v Databázy

4

137

19.12.2013 11:21

ChickenHunter79

V tomto fóre nie sú ďalšie neprečítané témy.

Optimalizácie velkých tabuliek

v Databázy

2

354

04.04.2010 9:50

Unlink

V tomto fóre nie sú ďalšie neprečítané témy.

Pomoc so spajanim tabuliek

v Databázy

11

450

19.01.2010 9:47

pilná lama glama

V tomto fóre nie sú ďalšie neprečítané témy.

Program na spracovanie tabuliek

v Ostatné programy

5

111

12.07.2017 12:23

barosko

V tomto fóre nie sú ďalšie neprečítané témy.

Úprava joinu 2 tabuliek

v Databázy

3

150

27.09.2014 19:55

majky358

V tomto fóre nie sú ďalšie neprečítané témy.

Výpis z viacerých tabuliek

v Databázy

4

365

27.01.2010 23:03

Merlin_sk



© 2005 - 2017 PCforum, edited by JanoF