Autor Zpráva
Welton123
Profil
Zdravím,

Chtěl bych se zeptat, zda je nějaká možnost, jak v MySQL tabulce přidat další sloupec ale tak, aby první záznam měl v tom sloupci "1", 5 záznam číslo "5" atd..., ale s tím, že se ten sloupec nebude měnit a zůstane jako pořadí.
juriad
Profil
Nejjednodušší by bylo vytvořit další tabulku s tím jedním dalším sloupcem, který bude mít auto_increment (na klíčích v ní nebude záležet)
a všechna data do ní nahrneš pomocí http://dev.mysql.com/doc/refman/5.6/en/insert-select.html
Pak dropneš původní tabulku a vytvoříš ji znovu (se všemi klíčemi a novým sloupcem pořadí) a data úplně stejným postupem vrátíš zpět.

Mimochodem, opravu je potřeba sloupec pořadí? Neexistuje již jiný sloupec, který pořadí určuje byť jeho hodnoty nejsou souvislé?
Většinu problémů lze řešit elegantněji než sloupcem pořadí.
Welton123
Profil
Ve výpisu se to potom řadí podle počtu hlasů, který má každý řádek v DB.
Potřebuji ale na čistou php stránku vytáhnout pomocí ?id=id_řádku kolikátý je ten daný řádek.
han5vk
Profil
Na to ale nepotrebuješ nevyhnutne za sebou nasledujúce čísla, stačí klasické idečko Auto Increment s PRIMARY indexom, pre každý záznam.
Kajman
Profil
Welton123:
kolikátý je ten daný řádek.

Tak spočítáte počet řádků, které mají lepší hlasy a přičtete jedničku.

select count(*)+1 poradi from tabulka where hlasu>$hlasu_aktualniho_radku
Welton123
Profil
Kajman:
To mi ale vypíše kolik serverů má více hlasů jak $hlasu_aktualniho_radku.
Já potřebuji zjistit, kolik má ten server hlasů a kolikátý je v pořadí.

Kdyby bylo pořadí třeba

Fotka_id | Hlasu
1 | 35
2 | 45
3 | 9

A dám potom za adresu $id=2 tak, aby mi to vypsalo, kolikátá je v tom pořadí fotka s ID 2 podle počtu hlasů a ne podle pořadí v tabulce.
Kajman
Profil
Pokud ještě nemáte vytažená data aktuálního řádku a je potřeba v dotaze použít id, jde i to...

SELECT akt.hlasu,
       Count(*) + 1 poradi
FROM   tabulka pom,
       (SELECT hlasu
        FROM   tabulka
        WHERE  fotka_id = 2) akt
WHERE  pom.hlasu > akt.hlasu

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0