Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 16 ] 
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
Príspevok NapísalOffline : 25.06.2012 17:44

Nazdarek. Vytvoril som si celect z 2 tabuliek kde v tabulka1 su udaje o uzivateloch a v tabulka2 su fotky uzivatelov. Select vyzera nasledovne:
Kód:
$selectUsers=mysql_query("SELECT tabulka1.id_uzivatel, tabulka1.krajina, tabulka2.fotka  FROM tabulka1 left join tabulka2 on tabulka1.id_uzivatel = tabulka2.id_uzivatel WHERE tabulka1.krajina='SK' ORDER BY tabulka1.uzivatel");

Toto funguje dobre /zobrazi mi zoznam vsetkych uzivatelov/ az na jeden maly detail. Totiz ak ma uzivatel v tabulka2 Viac fotiek, tak aj vo vysledkoch sa tento uzivatel zobrazi viackrat.. No a to by som potreboval odstranit. Teda aby mi kazdeho uzivatela /bez ohladu na to kolko fotiek ma v tabulka2/ zobrazilo iba raz.. Skusal som to upravit pomocou GROUP BY
Kód:
$selectUsers=mysql_query("SELECT tabulka1.id_uzivatel, tabulka1.krajina, tabulka2.fotka  FROM tabulka1 left join tabulka2 on tabulka1.id_uzivatel = tabulka2.id_uzivatel WHERE tabulka1.krajina='SK' GROUP BY tabulka1.id_uzivatel ORDER BY tabulka1.uzivatel");

a aj pomocou GROUP_CONCAT
Kód:
$selectUsers=mysql_query("SELECT tabulka1.id_uzivatel, tabulka1.krajina, tabulka2.fotka  GROUP_CONCAT(tabulka1.id_uzivatel) FROM tabulka1 left join tabulka2 on tabulka1.id_uzivatel = tabulka2.id_uzivatel WHERE tabulka1.krajina='SK' ORDER BY tabulka1.uzivatel");

no ani jeden spôsob mi nefungoval. :(
Neviete mi poradit ako upravit ten select aby som dostal pozadovany vysledok?
Dakujem


Offline

Správca fóra
Správca fóra
Duplicitne zaznamy

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 25.06.2012 20:21

a ako ma vyzerat pozadovany vysledok? zaujimaju ma hlavne tie fotky - len 1 fotka sa ma vyselektovat ci ako?







_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
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
Príspevok Napísal autor témyOffline : 26.06.2012 8:29

Skusim to pre lepsie pochopenie nejako znazornit:
V tabulka1 mam zoznam registrovanych uzivatelov. V skratke:
id-id_uzivatela-meno-krajina
1-us1-JozefJ-SK
2-us2-PeterP-SK
3-us3-MartinM-SK
4-us4-LiborL-CZ
5-us5-DagmarD-CZ

A tabulka2 obsahuje nazvy fotiek registrovanych uzivatelov /ktori si tie fotky pridali - tych fotiek moze byt pre kazdeho uzivatela n-pocet/
id-id_uzivatela-meno-fotka
1-us1-JozefJ-fotkaJ1.jpg
2-us1-JozefJ-fotkaJ2.jpg
3-us1-JozefJ-fotkaJ3.jpg
4-us2-PeterP-fotkaP1.jpg
5-us5-DagmarD-fotkaD1.jpg
6-us5-DagmarD-fotkaD2.jpg

No a pri mojom selecte (ten ktory som uviedol v prvom prispevku) je vysledok takyto:
1.JozefJ - SK
2.JozefJ - SK
3.JozefJ - SK
4.PeterP - SK
5.MartinM - SK
6.LiborL - CZ
7.DagmarD - CZ
8.DagmarD - CZ

Cize mi to vlastne vypise 8 uzivatelov aj ked v skutocnosti ich je iba 5. A moj pozadovany vysledok by mal byt:
1.JozefJ - SK
2.PeterP - SK
3.MartinM - SK
4.LiborL - CZ
5.DagmarD - CZ
Ja jednoducho potrebujem vytvorit zoznam registrovanych uzivatelov s tym ze pri samotnom zobrazeni (zozname) bude pri uzivatelovi ktory ma pridane nejake fotky (a teda sa nachadza v tabulka2) zobrazena aj jedna jeho fotka.
Uf..dufam ze je to aspon trocha jasnejsie.. :rolleyes:


Offline

Správca fóra
Správca fóra
Duplicitne zaznamy

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 26.06.2012 9:19

Toto by malo fungovat (vrati vsetkych registrovanych aj s fotkou, ak nejaku maju)
Kód:
SELECT id_uzivatel, krajina, fotka
FROM tabulka1 t1
LEFT JOIN tabulka2 t2 USING(id_uzivatel)
GROUP BY id_uzivatel

ale tak sa mi zda, ze si to uz skusal, len si neuviedol, preco ti to nefungovalo...







_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Skúsený užívateľ
Skúsený užívateľ
Duplicitne zaznamy

Registrovaný: 29.10.07
Prihlásený: 27.10.23
Príspevky: 1395
Témy: 30
Bydlisko: Bratislava
Príspevok NapísalOffline : 26.06.2012 13:15

Je to normalen fungovanie databaz ze ti zaznamy rozmnozi... ak chces vidiet len jednu z fotiek, databaza si nema ako sama vymysliet ktoru. Musis jej to povedat. Jednoduche MIN ti to zabezpeci, ale vyberat to bude fotku ktora je prva po abecednom zoradeni podla nazvu. Mozno chces prvu, alebo poslednu... potom by vyber trochu zlozitejsi a budes tam potrebovat aj cas pre kazdu fotku.







_________________
PC: OS: Windows 11 (64bit) CPU: AMD Ryzen 5 3600 GPU: ASUS TUF RTX3060Ti 8GB RAM: 16GB DDR4-3200MHz Kingston Fury MB: ASUS TUF Gaming B550M WIFI SSD: 1000GB PCIe M.2 NVME
Mobil: Xiaomi POCO F2 PRO
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
Príspevok Napísal autor témyOffline : 26.06.2012 18:20

Toto:
Kód:
$selectUsers=mysql_query("SELECT tabulka1.id_uzivatel, tabulka1.krajina, tabulka2.fotka  FROM tabulka1 left join tabulka2 on tabulka1.id_uzivatel = tabulka2.id_uzivatel USING (tabulka1.id_uzivatel)  WHERE tabulka1.krajina='SK' GROUP BY tabulka1.id_uzivatel ORDER BY tabulka1.uzivatel");

ani toto:
Kód:
$selectUsers=mysql_query("SELECT tabulka1.id_uzivatel, tabulka1.krajina, MIN(tabulka2.fotka) AS 'fotka'  FROM tabulka1 left join tabulka2 on tabulka1.id_uzivatel = tabulka2.id_uzivatel WHERE tabulka1.krajina='SK' ORDER BY tabulka1.uzivatel");

nefunguje..A netusim preco.. :(
GoodWill -> s tymi fotkami..ak jedna z tych fotiek by mala oznacenie napr. "hlavna" (alebo bola inac rozlisena od ostatnych) ako by sa dala ta "tvoja myslienka" zrealizovat resp, prepisat do toho selectu??


Offline

Správca fóra
Správca fóra
Duplicitne zaznamy

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 26.06.2012 20:23

tvoj pozadovany vysledok nemoze byt 5 uzivatelov, lebo v sql mas podmienku, ze ti ma vratit len tych, ktorych krajina je SK, takze stale nechapem, co ti na tom nejde, ked mne to funguje bez problemov (podla tvojho popisu), teda vysledok je:

us1-SK-fotkaJ1.jpg
us2-SK-fotkaP1.jpg
us3-SK-NULL

PS: podla struktury, co si sem dal, tabulka1.uzivatel neexistuje







_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Skúsený užívateľ
Skúsený užívateľ
Duplicitne zaznamy

Registrovaný: 29.10.07
Prihlásený: 27.10.23
Príspevky: 1395
Témy: 30
Bydlisko: Bratislava
Príspevok NapísalOffline : 27.06.2012 7:53

Priznak "hlavna" ma svoje pre aj proti...
plusom je, ze vybery budu jednoduche (staci do where podmienky pridat AND hlavna = 1
minusom ale je, ze sa budes musiet starat o to aby tento priznak mala vzdy prave jedna fotka







_________________
PC: OS: Windows 11 (64bit) CPU: AMD Ryzen 5 3600 GPU: ASUS TUF RTX3060Ti 8GB RAM: 16GB DDR4-3200MHz Kingston Fury MB: ASUS TUF Gaming B550M WIFI SSD: 1000GB PCIe M.2 NVME
Mobil: Xiaomi POCO F2 PRO
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
Príspevok Napísal autor témyOffline : 27.06.2012 8:51

OK..mozno som sa zle vyjadril tak to skusim napisat inac. Mame tabulka1 v ktora obsahuje udaje o registrovanych uzivateloch ako napr. id, meno, krajina, pohlavie, vek atd. A mame tabulka2, ktora obsahuje fotky uzivatelov. Nie vsetci uzivatelia maju fotky a niektory uzivatelia tych fotiek maju viac.. A uloha znie:
Vytvorit zoznam (list) uzivatelov kde v pripade ak maju nejaku fotku / a teda sa nachadzaju v tabulka2/ tak pre tohto uzivatela vyberieme 1 fotku a nasledne ju aj zobrazime.
Cize ide o klasicke vyhladavanie /a zobrazenie / uzivatelov s podmienkami typu (pochadza z SK, ma fotku/nema fotku, je to zena/muz) ..proste tie podmienky si navstevnik navoli vo formulary.
No a ja mam problem s tym (selecty ktore som uviedol v predch. prispevkoch), ze ak ma uzivatel "Jozko J" viacero fotiek napr.3 , tak v zozname uzivatelov sa mi meno"Jozko J" zobrazi 3 krat. A to prave nechcem. Kazdeho uzivatela chcem mat v zozname iba raz.
Dufam, ze je to aspon o troska jasnejsie co chcem docielit.


Offline

Správca fóra
Správca fóra
Duplicitne zaznamy

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 27.06.2012 11:52

Riesenie tvojho problemu tu uz mas uvedene.







_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Skúsený užívateľ
Skúsený užívateľ
Duplicitne zaznamy

Registrovaný: 29.10.07
Prihlásený: 27.10.23
Príspevky: 1395
Témy: 30
Bydlisko: Bratislava
Príspevok NapísalOffline : 28.06.2012 11:59

Ano, jasne to je... vieme co potrebujes. Ale zamysli sa nad tym sam. Ak su tam 3 fotky, tak ktoru chces vidiet? Databaza si len tak sama nevyberie, musis jej oznamit ktora fotka ta zaujima.







_________________
PC: OS: Windows 11 (64bit) CPU: AMD Ryzen 5 3600 GPU: ASUS TUF RTX3060Ti 8GB RAM: 16GB DDR4-3200MHz Kingston Fury MB: ASUS TUF Gaming B550M WIFI SSD: 1000GB PCIe M.2 NVME
Mobil: Xiaomi POCO F2 PRO
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
Príspevok Napísal autor témyOffline : 28.06.2012 15:12

Takze toto mi funguje:
Kód:
SELECT id_uzivatel, uzivatel, krajina, fotka FROM tabulka1 t1 LEFT JOIN tabulka2 t2 USING(id_uzivatel, uzivatel) GROUP BY id_uzivatel

Problem bol v tom ze obe tabulky mali 2 spolocnych menovatelov a to id_uzivatel a uzivatel.
No ked do tohto selectu zapracujem podmienku:
Kód:
SELECT id_uzivatel, uzivatel, krajina, fotka FROM tabulka1 t1 LEFT JOIN tabulka2 t2 USING(id_uzivatel, uzivatel)  WHERE t2.fotka='hlavna' GROUP BY id_uzivatel

tak mi to zobrazi iba uzivatelov, ktori maju fotku. Ako to mam upravit aby mi to zobrazovalo vsetkych uzivatelov a pri tych uzivateloch ktori maju fotku, tak bola vybrana iba ta fotka, ktora ma oznacenie ako hlavna??


Offline

Správca fóra
Správca fóra
Duplicitne zaznamy

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 29.06.2012 10:25

Vysledok selectu bez group by musis zoradit tak, aby useri s fotkami oznacenymi ako hlavna boli uvedeni skor ako ti, ktori take fotky nemaju, resp. nemaju ziadne fotky - takto ziskany zoznam uz len zgrupis, aby sa ti useri neopakovali a mas to...







_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Skúsený užívateľ
Skúsený užívateľ
Duplicitne zaznamy

Registrovaný: 29.10.07
Prihlásený: 27.10.23
Príspevky: 1395
Témy: 30
Bydlisko: Bratislava
Príspevok NapísalOffline : 29.06.2012 10:43

Nemozes dat tu podmienku do WHERE, lebo potom LEFT JOIN zacne fungovat ako INNER JOIN.
Navyse, kedze uz mas v podmienke ze vyberas len hlavnu fotku, tak group by nepotrebujes.

Spravne to ma byt takto:
Kód:
SELECT id_uzivatel, uzivatel, krajina, fotka
  FROM tabulka1 t1
         LEFT JOIN tabulka2 t2 ON t2.id_uzivatel = t1.id_uzivatel
                              AND t2.fotka       = 'hlavna'







_________________
PC: OS: Windows 11 (64bit) CPU: AMD Ryzen 5 3600 GPU: ASUS TUF RTX3060Ti 8GB RAM: 16GB DDR4-3200MHz Kingston Fury MB: ASUS TUF Gaming B550M WIFI SSD: 1000GB PCIe M.2 NVME
Mobil: Xiaomi POCO F2 PRO
Offline

Správca fóra
Správca fóra
Duplicitne zaznamy

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 29.06.2012 10:56

treba vsak mysliet aj na ten pripad, ze user sice bude mat nahrate nejake fotky, ale ziadnu nebude mat oznacenu ako hlavna, pripadne ich bude mat oznacenych viac (zle osetrenie a pod) - samozrejme, ak to nie je dolezite, tvoje riesenie je spravne







_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
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
Príspevok Napísal autor témyOffline : 01.07.2012 18:24

GoodWill, neviem preco ale ak som pouzil presne tvoj kod, tak to sice fungovalo, ale nejako mi to okrem id_uzivatel nechcelo zobrazovat ostatne udaje. Ale ako vzor je tento kod dobry. Po uprave :
Kód:
SELECT t1.id_uzivatel,  t1.uzivatel,  t1.krajina, t1.fotka FROM tabulka1 AS t1  LEFT JOIN tabulka2 AS t2 ON t1.id_uzivatel = t2.id_uzivatel AND t2.fotka = 'hlavna' WHERE NOT(t1.id_uzivatel='$uzivatelID') ORDER BY t1.uzivatel ASC

to funguje presne ako potrebujem..Teda aspon myslim ze to funguje, tak ako ma..Zobrazuje to vsetkych uzivatelov ci uz ma fotky alebo nie, alebo ak nema ziadnu fotku oznacenu ako hlavnu, tak ho zobrazi bez fotky..Cize presne ako potrebujem a bez duplicit...
Dakujem za rady
PS: AK je v tom selecte nejaka chyba, resp. "nejake potencionalne riziko", prosim, upravte mi to, alebo ma na to upozornite.
Este raz vdaka... ;)


Odpovedať na tému [ Príspevkov: 16 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. Ako vymazať duplicitné záznamy podľa podmienky

v Databázy

3

430

19.06.2018 10:22

SuchSoft Zobrazenie posledných príspevkov

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

v PHP, ASP

20

973

10.01.2010 18:40

WebScript Zobrazenie posledných príspevkov

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

v PHP, ASP

5

409

09.12.2011 16:04

emer Zobrazenie posledných príspevkov

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

v Operačné systémy Microsoft

4

455

29.09.2011 9:09

sliki55 Zobrazenie posledných príspevkov

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

v Operačné systémy Microsoft

5

531

01.06.2011 18:53

Denco1 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Databáza, duplicitné hodnoty, vybrať len jednu

v PHP, ASP

2

259

25.07.2012 12:56

DeiForm Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. DNS zaznamy - modifikacia pre www a mail s SSL certifikatmi na externom serveri doma.

v Webhosting a servery

2

757

11.03.2021 9:47

Jusufs Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Duplicitné osobné priečinky na navigačnom table Outlok 2003

v Sieťové a internetové programy

0

528

09.06.2009 23:01

Jany1953 Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
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

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra