Kdyz dam do table5 odkaz primo na table1, misto toho aby to tu hodnotu bralo z table4, tak to funguje normalne. asi to budu muset takhle predelat....
Příspěvky odeslané z IP adresy 88.146.225.–
Koukám, že psát na toto fórum je docela otravné a to myslim především díky individuum, kteří umějí akorát postovat nechutné obrázky a nic víc, možná by měl server přehodnotit strategii neregistrovaných uživatelů....
#17 peter
Zajímavé je, že mi workbench tuto strukturu takto nabídne automaticky a pak s ní mysql neumí pracovat... Pořád mi nedochází v čem je takový problém? V tom, že tam mám duplicitní idcka? No a co? tak tam jsou?
jako toto:
SELECT e.jmeno, a.vysledek
FROM vysl a
LEFT JOIN prenos_stav b ON b.id=a.id_prenos_stav
LEFT JOIN prenos c ON c.id=b.id_prenos
LEFT JOIN zadost d ON d.id=b.id_zadost
LEFT JOIN klient e ON e.id=d.id_klient
WHERE e.klient='lojza'
vs toto:
SELECT * FROM vysledky WHERE klienti_id = "idecko"
je docela rozdíl a to jak ve složitosti zápisu, tak podle mne i v času potřebném pro vykonání příkazu...
Jinak nepoužívám žádné speciální příkazy. Databaze je vlastne obrazem trid v PHP, takze da se rict ze vzdy nacitam cely radek (1 radek = 1 objekt) a stejne tak kdyz ho chci smazat tak mám pouze prikaz:
DELETE FROM klienti WHERE id="idcko"
no a tento prikaz když provedu a ve vysledcich je vice radku patrici k jednomu klientovi / zadosti tak se mi nesmazou vsechny....
#14 Kit
No kdyz je to dulezite, tak table1 = klienti, table2 = zadosti klienta, table3 - definice prenosu, table4 - statusy prenosu (v jakym kroku je zadost v prenosu), table5 - statusy-vysledky (jeden status muze mit vice vysledku, podle toho v jake casti prenosu se prave nachazi)
No a praxe je takova, ze potrebuju z table5 zjistit jaky klient mel ten nebo onen vysledek. Jako muzu vyhazet ty dalsi sloupce s IDckama a nechat tam pouze odkaz na predchazejici tabulku, tzn ze v table5, by byl odkaz pouze na table4. Jenze kdyz pak budu chtit vytahnout vsechny vysledky pro klienta z table5, tak to bude docela dlouhej a pro me temer nepouzitelnej prikaz. Musel bych z table5 nacist table4, tam zjistit jaka to je zadost(table2) a pak se teprve dohrabat k tomu, komu ta zadost patri (table1). Tzn ze nemohu pouzit jednoduchej prikaz where klienti_id (table1_id) = x
Jinak skutečně v table4 jsou odkazy na table1, table2, table3. Stejne tak i v table5 jsou odkazy na table1, table2, table3, table4. Nevidím v tom nějaký problém a dost mi to usnadňuje práci, protože je jednodušší vzít jeden řádek z jedné tabulky a s ním i všechny odkazy na související věci, než to nějak dohledávat....
Tak ještě oprava, maže si to jak chce. Někdy to smaže dva, někdy jeden. A přes phpmyadmina to maže taky blbě, jako přes query...
Právě, že používám InnoDB. Dělá to jen u tabulky která bere z jiné dceřinné. Pro ukázku struktura je zhruba taková:
Všude je ON DELETE - CASCADE
A když v table1 smažu záznam a v table5 je více radku odkazujicich na table4, tak mi tam vždycky nějakej zůstane. Jak jsem již psal výše.
Dobrý den, mám takový problém s foreign klíčema. Mám několik tabulek, které jsou vzájemně provázány a problém je v tom, že když v jedné z těch tabulek, mám více řádků odkazující na jeden řádek v mateřské tabulce. Tak se při smazání řádku v mateřské tabulce nesmažou všechny řádky na něj odkazující. Když je v dceřinné pouze jeden řádek, tak se smaže. Pokud je jich tam více, kteří odkazují na stejný řádek, tak se smaže vždy ten poslední, někdy i předchozí a vždy zůstane ten první. I přes to, že už nemá na co odkazovat. Ovšem pokud řádek v mateřské tabulce smažu přímo z phpmyadmin tak se smažou i všechny odkazující řádky. Divné co? Tak teď babo raď :) Kde je problém? Děkuji za připadné odpovědi.