Autor Zpráva
MilanJ
Profil
Nevím, jestli můj dotaz patří sem nebo do databází, ale snad mi někdo poradí.

Musím vyřešit problém s generování jedinečného ID, které by mělo obsahovat datum a číslo v pořadí.
Konkrétně:

Mám v MySQL tabulku, která obsahuje pole ID_aukce typu VARCHAR, do kterého se ukládá pořadové číslo.
To generuje PHP script, a to tak že vloží pořadové čísloaktuální rok , např. první položka má číslo 1/2006, druhá 2/2006, atd. Problém ale je, že pole DB je typu varchar a tak sql dotaz nepozná, že je např. rok 2007 a že první položka roku 2007 začíná zase 1/2007.
Asi jsem to nenapsal moc srozumitelně.:-/
Prostě potřebuju, aby se do db ukládaly ID_aukce ve formátu pořadové číslo + aktuální rok, a od nového roku na novo.

Můj kód není vyhovující, nevím co a jak změnit...nic mě nenapadá. :-/

$sql = "SELECT MAX(id_aukce) AS id_aukce FROM aukce";
$vysledek_sql = mysql_query($sql);
$radek = mysql_fetch_array($vysledek_sql);
$id_aukce = $radek['id_aukce'] + 1; // výsledek dotazu načteme do $id_aukce a přičteme 1
$id_aukce = $id_aukce."/".date(Y);
...pak se provede INSERT do db
samurajj
Profil
Problém ale je, že pole DB je typu varchar a tak sql dotaz nepozná, že je např. rok 2007 a že první položka roku 2007 začíná zase 1/2007.

a neslo by v te tabulce udelat index pro dva sloupce?

primary key(ID_aukce,rok)

kdybys pak vybiral aukce z jednoho roku, jednoduse bys napsat where rok=2006 order by id_aukce

a pri vkladani polozky bys jen zjistil mas id_aukce pro ten rok +1
MilanJ
Profil
Jde nastavit PRIMARY KEY pro 2 pole???
MilanJ
Profil
Jak se potom budu ale odkazovat na pole v SQL dotazu?
Když teď použiju v SQL např.:SELECT * FROM aukce, prubeh_aukce WHERE aukce.id_aukce = prubeh_aukce.id_aukce, jak se budu dotazovat až budu mít 2x PRIMARY KEY (ID_aukce, rok) ???
samurajj
Profil
mno budes muset mit 2 podminky pro spojeni tech tabulek,
where

aukce.id_aukce = prubeh_aukce.id_aukce AND
aukce.rok = prubeh_aukce.rok
MilanJ
Profil
A pokud bych trval na jednom poli s jedinečným ID? Je to řešitelný?
Toto téma je uzamčeno. Odpověď nelze zaslat.

0