FAQ |
Kalender |
2008-01-27, 18:32 | #1 | ||
|
|||
Nykomling
|
Jag har ett problem med en query. Jag behöver konvertera info från fält username som är = ett account_id i tabell 2, in i tabell 1 till fältet account_id.
Queryn som jag har änså länge ser ut så här: Kod:
$query = mysql_query("INSERT INTO tabell 1 (account_id, membership_id, price, accept_after_confirm, cdate, status) VALUES('info_från_tabell2','data1','data2','data3','data4','data5')") or die(mysql_error()); PaLL3 |
||
Svara med citat |
2008-01-27, 20:52 | #2 | ||
|
|||
Klarade millennium-buggen
|
Din frågeställning är inte glasklar, men jag tolkar den så att du vill att kolumn tabell1.account_id ska innehålla samma värden som kolumn tabell2.account_id och på det sättet knyta ihop informationen i de två tabellerna rad för rad, eller flera rader i en tabell till en rad i den andra tabellen
Gäller det en (1) ny rad kan du skriva insert into tabell1 (fält1,fält2....) values ((select fält1 from tabell2 where något villkor som ger en och endast en rad till svar),värde2,.....). Alternativt har du värdet i en variabel redan och då skriver du precis som du gjort. Ska du uppdatera befintliga rader skriver du update tabell1, tabell2 set tabell1.fält=tabell2.fält, .... where tabell1.id_fält=tabell2.id_fält. Glöm inte unika index eller auto-increment på rätt ställe så att du inte får dubletter av misstag. |
||
Svara med citat |
2008-01-27, 21:00 | #3 | ||
|
|||
Nykomling
|
Ok ska förklara mig lite bättre.
Jag har en användare som betalar för sitt medlemskap. Jag har namnet på medlemen men inte användarens account_id. Så användarnamnet ska omvandlas till account_id sen ska queryn köras med account_id till databasen. Så tabell 2 innehåller användarnamn på samtliga medlemmar och konto id (account_id), och tabell 1 innehåller account_id tillsammans med betalinfo. Så account_id ska föras in från tabell 2 till tabell 1 men den enda informationen jag har av användaren är medlemens namn. *EDIT* Så det jag behöver förutom en query är antagligen en del php scriptande med. Kladdigt.. japp, som vanligt när det gäller mina frågor =) PaLL3 |
||
Svara med citat |
2008-01-27, 22:00 | #4 | ||
|
|||
Klarade millennium-buggen
|
Hoppas du lagt en unique-index på namn i medlemsdatabasen. Annars kan det bli svårt att veta vilken Kalle Persson som betalt.
Om du ska skapa en ny rad i din andra tabell skriver du: insert into tabell2 (account_id, fält1,...) select tabell1.account_id, 'värde1', ... from tabell1 where tabell1.user='användarnamn' Den här frågan missar om det inte finns någon user med användarnamn. Finns det 2 så får båda betalningen tillgodoräknad. Genom att du lägger värde[n] inom fnuttar letar inte mysql efter någon kolumn med namnet, utan tar värdet rakt upp och ner. |
||
Svara med citat |
2008-01-28, 00:34 | #5 | ||
|
|||
Nykomling
|
Alla har unika namn. Det går inte att registrera sig med samma nick. Som tur är...
Jag kollade igenom tabellerna igen och såg att jag skrivit fel. Det ska vara Tabell1 har fältet account_id och tabell2 har fältet id. Tabell2 har resten av informationen angående användare osv med. Typ lösen, ip mm Men det som är relevant är nicket på medlemen som finns i fältet user. Tabell2 user ska omvandlas till tabell2 id som i sin tur ska in i tabell1 account_id. Enklare än så kan jag inte förklara.. tog mig bara tre inlägg =) PaLL3 |
||
Svara med citat |
2008-01-28, 09:08 | #6 | ||
|
|||
Klarade millennium-buggen
|
Redigera den fråga som jag föreslog tidigare så bör det fungera.
|
||
Svara med citat |
2008-01-29, 09:51 | #7 | ||
|
|||
Nykomling
|
Tack för hjälpen.. detta funkade:
Kod:
$query = mysql_query("INSERT INTO tabell1(account_id, membership_id, price, accept_after_confirm, cdate, status) VALUES((SELECT id FROM tabell2 WHERE user = '$infos[1]'),'7','30.00','1',NOW(),'APPROVED')") or die(mysql_error()); |
||
Svara med citat |
2008-01-29, 10:28 | #8 | ||
|
|||
Nykomling
|
som ett komplement till den förra:
Kod:
$query = mysql_query("UPDATE tabell1, tabell2 SET tabell1.fält1 = tabell2.fält2 WHERE tabell1.fält1=tabell2.fält2") or die(mysql_error()); PaLL3 |
||
Svara med citat |
Svara |
|
|