Autor Zpráva
Silver8000
Profil
Moderátor Kajman: Přesunuto z jak na tohle řazení? Příště si založte vlastní téma a nedělejte nepořádek u jiného problému!


mam dotaz: jak by jste spojili 6 tabulek pricemz v kazde tabulce je pojmenovano id trochu jinak ale souhlasi v kazdem poli?
Primarni klic je vzdycky ID.
priklad :

  table_1 (  table_1_id,table_1_value_1,table_1_value_2)
  
  table_2 (  table_2_id,table_2_value_1,table_2_value_2)
  
  table_3 (  table_3_id,table_3_value_1,table_3_value_2)

  table_4 (  table_4_id,table_4_value_1,table_4_value_2)
  
  table_6 (  table_6_id,table_6_value_1,table_6_value_2)
  
Tori
Profil
To vypadá jako chybný návrh databáze: Některé časteji řešené dotazy pro MySQL - FAQ » Nová tabulka/sloupec pro každý záznam
Silver8000
Profil
Tori:
Chapu ale potrebuji z toho vytahnout jen dulezita data a sloucit v jednu tabulku aby pak pri konecne fazi mohla byt jen jedna.
V takove podobne databazi mam uz obsah ktery chci dat do jedne tabulky napriklad :

my_new_table ( table_id,table_value //respektive table value 1,2,3,4 atp. podle potreby)
Tori
Profil
Koukněte se na UNION. Sloučené sloupce z různých tabulek by měly mít stejný datový typ.
Silver8000
Profil
Tori:
Promin Tori ale abych pravdu rekl tak me nebavi cist jen PUL VYSVETLENI pisou tam o tom jak to udelat ale neni tam videt jednoducha struktura tabulky a jeji prikaz pro UNION... je tam jen prikaz SELECT s UNIONem na nejakou imaginarni tabulku kde neni ukazana jeji struktura pro pochopeni.

Tak moc prosim ukazte mi nekdo jak na to presne ...
Dejme tomu ze strukturu uz mame s pouzitim me tabulky ze ktere chceme vytahnout jen data.
Vsechny ID v tabulkach jsou naprosto identicke a ostatni jsou ty data.

  table_1 (  table_1_id,table_1_value_1,table_1_value_2)
  
  table_2 (  table_2_id,table_2_value_1,table_2_value_2)
  
  table_3 (  table_3_id,table_3_value_1,table_3_value_2)
 
  table_4 (  table_4_id,table_4_value_1,table_4_value_2)
  
  table_6 (  table_6_id,table_6_value_1,table_6_value_2)

Dik moc ...
Tori
Profil
(select table_1_id, table_1_value_1, table_1_value_2
  from table_1)
union all
(select table_2_id, table_2_value_1, table_2_value_2
  from table_2)
union all
(select table_3_id, table_3_value_1, table_3_value_2
  from table_3)
Výsledek bude, jako kdybyste ty tabulky dal pod sebe - chtěl jste to takhle, doufám? Sloupce budou mít názvy podle prvního selectu.
Silver8000
Profil
tak ted pokud jsem to pochopil dejme tomu ze budou v :
tabulce 1 hodnoty 1,2,3
tabulce 2 hodnoty 1,4,5
tabulce 3 hodnoty 1,6,7
tabulce 4 hodnoty 1,8,9
tabulce 5 hodnoty 1,10,11
tabulce 6 hodnoty 1,12,13

a ty se sloucej na 111111,24681012,35791113

pokud je to takhle a ty hodnoty se slouci a pak se nedaj samostatne vyvolat pro ten dalsi insert tak me nezbiva nez kazdou tabulku volat samostatne dat to do array tabulky a nasledne insertovat do nove DB tabulky a to hezky po jedom.

ukazu priklad jak jsem to myslel strukturove pro insert do nove tabulky:

Jak uz jsem rekl ID je IDENTICKE a ostatny jsou data

  table_1 (  table_1_id,table_1_value_1,table_1_value_2)
  
  table_2 (  table_2_id,table_2_value_1,table_2_value_2)
  
  table_3 (  table_3_id,table_3_value_1,table_3_value_2)
 
  table_4 (  table_4_id,table_4_value_1,table_4_value_2)
  
  table_6 (  table_6_id,table_6_value_1,table_6_value_2)


prikladna_nova_tabulka(
table_id,
table_1_value_1,
table_1_value_2,
table_2_value_1,
table_2_value_2,
table_3_value_1,
table_3_value_2,
table_4_value_1,
table_4_value_2,
table_6_value_1,
table_6_value_2
)
takhle nejak bych si to predstavoval aby hodnoty sli do nove tabulky a jelikoz id je vsude stejne tak se zapise jen jednou
Tori
Profil
Silver8000:
Jo takhle jste to chtěl! Pardon, nepochopila jsem.
INSERT INTO prikladna_nova_tabulka (table_id, table_1_value_1, table_1_value_2, 
  table_2_value_1, table_2_value_2, 
  table_3_value_1, table_3_value_2, 
  table_4_value_1, table_4_value_2, 
  table_6_value_1, table_6_value_2)
SELECT table_1_id, table_1_value_1,table_1_value_2,
  table_2_value_1, table_2_value_2,
  table_3_value_1, table_3_value_2,
  table_4_value_1, table_4_value_2,
  table_6_value_1, table_6_value_2
FROM table_1 t1
INNER JOIN table_2 t2 ON t1.table_1_id = t2.table_2_id
INNER JOIN table_3 t3 ON t1.table_1_id = t3.table_3_id
INNER JOIN table_4 t4 ON t1.table_1_id = t4.table_4_id
INNER JOIN table_6 t6 ON t1.table_1_id = t6.table_6_id
Tohle rovnou zkopíruje data z těch tabulek do jedné nové. Předpokládám, že table_1 je hlavní a ke každému řádku z této tabulky existuje jeden řádek s tímtéž ID i v ostatních tabulkách. Pokud by v ostatních tabulkách mohl odpovídající řádek chybět, změňte INNER JOIN na LEFT JOIN, vloží se tam NULL.
Silver8000
Profil
Diky funguje to bezvadne jen jsem si to prizpusobil na moje tabulky....
A misto insertu jsem zvolil to spojeni tabulek a vytvoril nahled tech dat ktere jsem potreboval.
Lepsi nez abych kopiroval celej obsah do jedne tabulky.
Protoze by to bylo obtizne nakopirovat cca 30 tisic veci.

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: