Zadejte hledaný výraz...

Oprava SQL dotazu

James_Scott
verified
rating uzivatele
(7 hodnocení)
17. 3. 2009 20:41:12
Ahoj, mam v MySQL tabulku o jednom sloupci(url) a v ni nekolik zaznamu. Chci udelat aplikaci,ktera mi vypise vzdy jen 6 nahodnych zaznamu. Vse mi funguje,jen jsem zjistil,ze se zaznamy opakuji. Da se nejak upravit SQL dotaz,aby se zaznamy neopakovaly? Predem diky za pomoc :)
//spojeni s DB
$db_spojeni = mysqli_connect('blablabla', 3306);
if (!db_spojeni)
{
echo "pripojeni k db se nepodarilo
popis chyby: ", mysqli_connect_error();
exit();
}
for ($i = 1; $i <= 6; $i++)
{
$vysledek = mysqli_query($db_spojeni, "SET NAMES 'utf8'");
$vysledek = mysqli_query($db_spojeni,"SELECT * FROM odkazy ORDER BY RAND()");
$radek=mysqli_fetch_array($vysledek);
echo $radek;
echo "
";
}
?>
17. 3. 2009 20:41:12
https://webtrh.cz/diskuse/oprava-sql-dotazu#reply262170
James_Scott
verified
rating uzivatele
(7 hodnocení)
17. 3. 2009 20:42:13
Mozna jsem to blbe popsal, chci aby se nevyskytovalo vice stejnych zaznamu.
17. 3. 2009 20:42:13
https://webtrh.cz/diskuse/oprava-sql-dotazu#reply262169
Petr Daněk
verified
rating uzivatele
(33 hodnocení)
17. 3. 2009 20:45:24
Napsal James_Scott;241229
Mozna jsem to blbe popsal, chci aby se nevyskytovalo vice stejnych zaznamu.
SELECT url FROM odkazy ORDER BY RAND() GROUP BY url
17. 3. 2009 20:45:24
https://webtrh.cz/diskuse/oprava-sql-dotazu#reply262168
Dolphi
verified
rating uzivatele
(28 hodnocení)
17. 3. 2009 20:45:39
Group by?
17. 3. 2009 20:45:39
https://webtrh.cz/diskuse/oprava-sql-dotazu#reply262167
James_Scott
verified
rating uzivatele
(7 hodnocení)
17. 3. 2009 21:06:24
Kdyz tam pridam GROUP BY url tak to hodi chybu:
17. 3. 2009 21:06:24
https://webtrh.cz/diskuse/oprava-sql-dotazu#reply262166
Jiří Zamazal
verified
rating uzivatele
(5 hodnocení)
17. 3. 2009 21:21:41
Ten cyklus for zahoď a uprav dotaz:
SELECT * FROM odkazy ORDER BY RAND() LIMIT 7
A pak vysledky vypiš cyklem
while($radek=mysqli_fetch_array($vysledek)){
echo $radek;
}
17. 3. 2009 21:21:41
https://webtrh.cz/diskuse/oprava-sql-dotazu#reply262165
for ($i = 1; $i <= 6; $i++)
{
$vysledek = mysqli_query($db_spojeni, "SET NAMES 'utf8'");
$vysledek = mysqli_query($db_spojeni,"SELECT * FROM odkazy ORDER BY RAND()");
$radek=mysqli_fetch_array($vysledek);
echo $radek;
echo "
";
}
Ouu, takhle posíláš šest dotazů na databázi. Z každého výsledku potom bereš jen první řádek. I kdyby ti takový dotaz pokaždé vracel unikátně namíchané url, je možné, že dostaneš víckrát tu samou.
17. 3. 2009 21:23:20
https://webtrh.cz/diskuse/oprava-sql-dotazu#reply262164
Vyházení duplicitních záznamů uděláš pomocí DISTINCT. Takže dotaz bude vypadat:
SELECT DISTINCT(url) FROM odkazy ORDER BY RAND() LIMIT 7
A výsledky vypiš tak, jak radí Mazlik ;)
17. 3. 2009 21:32:47
https://webtrh.cz/diskuse/oprava-sql-dotazu#reply262163
Fuck You
verified
rating uzivatele
(1 hodnocení)
17. 3. 2009 21:35:15
Protože to je obráceně, nejdřív GROUP, potom ORDER, viz http://dev.mysql.com/doc/refman/5.0/en/select.html
17. 3. 2009 21:35:15
https://webtrh.cz/diskuse/oprava-sql-dotazu#reply262162
Tomas Cupr
verified
rating uzivatele
17. 3. 2009 22:13:52
Napsal Mazlik;241275
Ten cyklus for zahoď a uprav dotaz:
SELECT * FROM odkazy ORDER BY RAND() LIMIT 7
A pak vysledky vypiš cyklem
while($radek=mysqli_fetch_array($vysledek)){
echo $radek;
}
Souhlas - akorat LIMIT 6.
17. 3. 2009 22:13:52
https://webtrh.cz/diskuse/oprava-sql-dotazu#reply262161
James_Scott
verified
rating uzivatele
(7 hodnocení)
17. 3. 2009 22:43:35
Super,funguje :) ..dal jsem na vase rady a jede to tak jak ma :)
S PHP&MySQL zacinam, netusil jsem ze nejakej SQL prikaz LIMIT vubec existuje,proto jsem to resil pres cyklus for. Ono na mensim dotazu to asi moc nevadi,ale dokazu si predstavit jak by to zatezovalo server na vetsim projektu. Kazdopadne diky vsem za pomoc.
17. 3. 2009 22:43:35
https://webtrh.cz/diskuse/oprava-sql-dotazu#reply262160
Pro odpověď se přihlašte.
Přihlásit