03. september 2009 - 09:57Der er
17 kommentarer og 1 løsning
Måske noget INNER JOIN?
Hej alle
Jeg har haft et spørgsmål kørende her, men uden held af nogen måde på denne.
Derfor forsøger jeg nu at omstrukturere lidt og stiller derfor spørgsmålet på en anden måde, som forhåbentlig giver et bedre afkast. Så, here goes :0)
Jeg har en DB hvor der bl.a. ligger to tabeller: students og orders
I orders ligger et field der hedder "ordrenr" (min increment) og i tabellen students ligger et field der hedder "email".
Disse vil jeg gerne have til at arbejde sammen så jeg kan få disse fields med ind i et a href link, som følgende:
<a href="mailto:minmail@mailadresse.dk?subject=Link fra minwebside.dk&body=http://www.minwebside.dk/view-task.php?=234">Send email til kunden</a>
Så hvis jeg opsummerer så er det sådan TO tabeller STUDENTS (tabel 1) email (field inde i tabel 1)
ORDERS (tabel 2) ordrenr (auto increment field i tabel 2)
Disse skal ind og erstatte nogle værdier i mit a-tag således at "ordrenr" dynamisk kommer ind og sætes i enden af view-task.php?id=xxx og "email" adressen som kommer fra tabellen STUDENTS skal dynamisk erstatte email adressen i mailto:her@kommerdynamisk.dk
Hvordan laver jeg dette? Jeg ved ikke om INNER JOIN eller andet kan løse dette, men vil meget gerne høre hvis I har nogle forslag.
På den side hvor dette "email" står på, er en side som kommer fra ordre systemet, hvilket vil sige at den har et ordrenr (eller ordre ID) i enden af URL, så jeg tænkte man kunne på en eller anden måde få kombineret.
Når der er lagt en ordre i systemet vil man kunne finde den pågældende ordre, og når man kommer herind vil alle oplysninger stå som da man oprettede ordren.
Der vil bl.a. står noget med: Kundens navn (som kommer fra en select box) $kunderef = addslashes($kunderef);
Desuden vil der være en ansvarlig for udførslen af opgaven, som er benævnt ved navn $oprettet_for = addslashes ($oprettet_for);
Disse to fields kommer fra hver sin tabel, hvor den første kunderef kommer fra tabellen "client" og den anden kommer fra tabellen "students"
Ved ikke om det hjælper? Jeg poster gerne mere kode hvis det kan hjælpe på sagen
Det kan gøres vha. $sql = "SELECT student.email FROM orders INNER JOIN student ON student.feltnavn = orders.feltnavn WHERE orders.OrderID = ".$OrderID.";"; $result = mysql_query($sql);
Der skal de 2 "feltnavn" skiftes ud med navnet på de felter som hører sammen i de to tabeller...
CREATE TABLE IF NOT EXISTS `orders` ( `ordreid` int(11) NOT NULL AUTO_INCREMENT, `ordredato` date NOT NULL DEFAULT '0000-00-00', `deadline` tinytext NOT NULL, `type_opgave` tinytext NOT NULL, `skaffer` tinytext, `ordre_overskrift` tinytext NOT NULL, `ordrebeskrivelse` text, `antal_format` tinytext NOT NULL, `antal_sider` tinytext NOT NULL, `antal_farver` tinytext, `kunderef` tinytext NOT NULL, `oprettet_for` tinytext NOT NULL, `godkendt` tinytext NOT NULL, PRIMARY KEY (`ordreid`), KEY `ONR` (`ordreid`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT AUTO_INCREMENT=3 ;
Og tabellen for "students" CREATE TABLE IF NOT EXISTS `students` ( `student_id` int(11) NOT NULL AUTO_INCREMENT, `opret_dato` date NOT NULL, `slutdato` tinytext NOT NULL, `navn` tinytext NOT NULL, `brugernavn` tinytext NOT NULL, `mobiltlf` varchar(8) NOT NULL, `telefon` varchar(8) NOT NULL, `cpr` tinytext NOT NULL, `adresse` tinytext NOT NULL, `bynavn` tinytext NOT NULL, `email` tinytext NOT NULL, `webside` tinytext NOT NULL, PRIMARY KEY (`student_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
Jeg skal lige høre efter en ting, hvilket indhold skal der ind her? For hvis den skal have titlen "student_id", hvad skal der så sættes ind her, for jeg kunne forestille mig at det har en eller anden relevans for selve INNER JOIN?
Du siger en "foreign key" tidligere, og hvad dækker det specifikt over? Og sådan en "foreign key" skal den incrementes eller ?
Jeg har været lidt ophængt og haft lidt ferie oven i, men er nu klar igen og vil gerne have afsluttet denne om muligt.
Har været inde og kigge lidt på dine links som du sendte den 9.sept.
Der ser det jo ud til at min tabel SKAL være sat til InnoDB, og jeg har jo sat min tabel MyISAM.
Så her kan det vel ikke lade sig gøre at definere en FOREIGN KEY, er det korrekt? Desuden har jeg omdøbt følgende: - tabellen "students" er student_id omdøbt til "id" - tabellen "orders" er ordre_id omdøbt til "id"
Du behøves ikke ændre din tabel fra MyISAM til innoDB, men det ville være en fordel..
Det skal stadig laves som var det en foreign key, MyISAM ignorerer det, men det skal stadig laves på den måde...
student_id i tabellen "orders" skal pege på en id(primary key) fra tabellen "students", på den måde kan du bruge det felt i "orders" til at hente navn osv. fra "students"
Svarer selv, da jeg kan se ud fra SW_red profilen at han ikke har været på EXP.dk siden oktober 2009
Synes godt om
Ny brugerNybegynder
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.