Autor Zpráva
tomas2245
Profil
Zdravím, už dlhšiu dobu premýšľam ako docielim to, že keď mám dve tabuľky ktoré vyzerajú takto:

Prvá tabuľka:

ID     stĺpec
1      hodnota
2      hodnota2
3      hodnota3
4      hodnota4


Druhá tabuľka:

momentálne vyzerá takto:


stĺpec    ID
hodnota   
hodnota2  
hodnota3   
hodnota4  

a chcem docieliť výsledok takýto: hodnota ID z tabuľky prvej na základe textu stĺpca z tabuľky 1 a 2)

stĺpec    ID
hodnota   1
hodnota2   2
hodnota3   3
hodnota4  4

potrebujem do tej tabuľky kde je práždne ID-čko priradiť ID z prvej tabuľky tam kde je hodnota2 = hodnota 2, hodnota3 = hodnota3 ............
Alphard
Profil
Update inner join a do podmínky vyjmenovat všechny sloupce. Nicméně tato situace je nějaké divná...
tomas2245
Profil
Alphard:

Ďakujem, funguje :) snažím sa dávať svoju štruktúru DB do poriadku lebo ako ID som používal napr. (1.A). ID obsahovala bodky a písmená..
teraz po novom to dávam ako auto increment a to svoje číslo napr. 1.A už mám v samostatnom stĺpci...
tomas2245
Profil
ešte mam jednu otázočku keď chcem dať:

ALTER TABLE tabulka DROP PRIMARY KEY;

funguje

ale keď chcem dať potom

ALTER TABLE tabulka ADD PRIMARY KEY (stlpec);

tak to už nejde nevie niekto prečo?

Chyba v dotaze (1062): Duplicate entry '1' for key 'PRIMARY'

chcem proste zmeniť primárný klúč na iný stĺpec než bol pred tým..
Alphard
Profil
Primární klíč musí být na unikátním a not null sloupci. Nemůže tam být vícekrát 1.
tomas2245
Profil
a ako mám teda postupovať prosím ťa keď chcem zmeniť primární klúč v existujúcej tabuľke s dátami?
Alphard
Profil
Upravit hodnoty v daném sloupci tak, aby byly unikátní. Nebo ten klíč definovat nad více sloupci. Nebo tabulka ani nemusí mít primární klíč. Záleží, čeho chceš dosáhnout.
tomas2245
Profil
chcem pridať unikátni klúč na stĺpec tovar_id a objednavka_id
primárny je ID s auto incrementom (ktorý by tu asi ani nemusel byť)

potrebujem tie unikátne kľúče mať pre tento kód:

<?php

mysqli_query($pripoj,"INSERT INTO tabulka (objednavka_id, tovar_id, pocet) 
        VALUES ('$objednavka_id', '$tovar_id', '$pocet') ON DUPLICATE KEY UPDATE pocet=pocet+VALUES(pocet)");
        
?>
Alphard
Profil
Jestli je id auto increment, tak tam nemohou být duplicity přece. Zřejmě je to pozůstatek z doby, než se tam dal auto increment, ale tak se musí upravit starší data, třeba to přečíslovat. Nebo si najít kombinaci sloupců, která unikátní bude.
tomas2245
Profil
Alphard:
už som to vyriešil a sám nechápem ako sa mi to podarilo :D ďakujem za pomoc
tomas2245
Profil
Alphard:
ešte by ma zajímala jedna vec, keď mám medzi tabuľkami väzbu 1:N tak spojenie vyzerá tak že keď je tabuľka:

TABULKA X
TABULKA Y

tak do TABULKY Y dávam stĺpec x_id
je dôležité mať ten stĺpec x_id nastavený ako cudzí kľúč?
Alphard
Profil
Asi by bylo lepší si o tom přečíst něco komlexně. Cizí klíč nemá na samotné spojení tabulek vliv, klasický index ovlivňuje rychlost, pak už je to jedno.
Cizí klíče hlídají integritu dat. Podle nastavení pak např. nejde smazat záznam, na kterém jsou závislé jiné záznamy, nebo se naopak při smazání daného záznamu smažou i ty na něm závislé. Vedlejší výhoda cizích klíčů je, že různé vizualizační nástroje pak dokáží graficky znázornit závislosti.
tomas2245
Profil
Alphard:
aha, už tomu rozumiem :) ďakujem ti za tvoj čas a vysvetlenie.

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: