Avatar billede zurekk Nybegynder
06. februar 2008 - 13:19 Der er 8 kommentarer og
1 løsning

Ændre navn på hel tabel udtrækning

Hej Eksperter,

Titlen er sikkert en smule forvirrende, men jeg sidder og har glemt hvad det kaldes når man sætter en start på en navne(eks. a_table, a_table2, a_table3).

Men det jeg vil have gjort er at sætte en sådan start på når jeg hiver dem ud af databasen. Jeg skal nemlig hive al data fra to tabeller ud, og der er mange ens rækker, og det har php problemer med medmindre man bruger mysql_fetch_rows(), hvilket ikke holder i denne sammenhæng.

Så det jeg skal er at hive data fra tabel1 og tabel2 ud. De rækker som tabel1 returnerer skal have "tb1_" foran, og som du nok har gættet skal tabel2 have "tb2_" foran :-)

Det jeg så har tænkt mig at gøre er at lave et script som separerer dem.

På forhånd tak.
Avatar billede zurekk Nybegynder
06. februar 2008 - 13:49 #2
Så skal jeg jo til at CONCAT()'e alle rækkerne. Så kan jeg lige så godt bruge 'as'.
Avatar billede jokkejensen Novice
06. februar 2008 - 15:03 #3
du behøver vel ikke at ligge tb_1 til alle kolonnerne i rækken, men evt bare på primkey.

/JJ
Avatar billede zurekk Nybegynder
06. februar 2008 - 15:06 #4
"primkey"?

Og jo, de to tabeller skal splittes til hver sit array senere hen. Derfor skal alle fra samme tabel have en form for id, der gør at jeg kan forbinde dem med hinanden.
Avatar billede jokkejensen Novice
06. februar 2008 - 15:11 #5
primarykey.

Jeps..


Det jeg mener: i psuedo kode:
(er lidt rusten til mit sql)

"(select concat('tbl_1', id) from tbl_1) union (select concat('tbl_2', id) from tbl_2)"
Avatar billede zurekk Nybegynder
06. februar 2008 - 15:21 #6
Men så får resten af rækkerne I samme tabel jo ikke "tbl_1" foran, hvilket de er nødt til. Det er ikke altid de samme tabeller, derfor kan jeg ikke skræddersy en enkel query til formålet, men er istedet nødt til at lave en løsning der virker hver gang. Og løsningen er at sætte noget foran alle felter fra samme tabel, og linke dem sammen på den måde.

:)
Avatar billede zurekk Nybegynder
07. februar 2008 - 18:16 #7
Det ser ikke ud til at der kommer flere forslag her, så jeg lukker bare tråden. Du for pointsne selvom jeg ikke rigtig fandt en løsning :(
Avatar billede jokkejensen Novice
08. februar 2008 - 09:16 #8
jeg er nu sikker på der er massere der ville kunne hjælpe, men en del der ikke ved hvad du mener... syntes sådan nogle sql spørgsmål plejer at blive fanget hurtigt, hvis de er mulige..

opret en ny, så smider jeg points tilbage ?

/JJ
Avatar billede zurekk Nybegynder
08. februar 2008 - 18:07 #9
Jeg tror bare ikke at det er muligt :)

Det er jo simpelt nok. Jeg vil kunne hente sådan her: "SELECT table1.*, table2.*", og så skal alle resultater fra table1 have "tb1_" foran, og alle resultater fra table2 "tb2_" foran(behøver ikke være "tb1" eller "tb2", kan også være "ko" og "kage").

Tag foreksempel disse to tabeller:

`user`
id = 1
username = jokke
password = jensen

`misc`
id = 12
username = jokke
nogetandet = noget helt andet

De skulle gerne kunne hentes således:
SELECT user.*, misc.* FROM user LEFT JOIN misc ON misc.username = user.username

Og give mig dette resultat:
u_id = 1
u_username = jokke
u_password = jensen
m_id = 12
m_username = jokke
m_nogetandet = noget helt andet
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester