Avatar billede fkp85 Praktikant
23. august 2012 - 11:16 Der er 11 kommentarer og
1 løsning

joins??? hvordan griber jeg den her opg. an?

Heysa allesammen jeg side og arbejder på den her opgave hvor jeg har to tabeller, tabel 1 inderholder produkt_guides_id og produkt_guides_navn. tabel 2 indeholder produkt_guides_to_guides_id, produkt_id og produkt_guides_id

jeg har lavet dette stykke kode, men der er noget galt, og jeg plejer aldrig at bruge joins.. nogle der kan hjælpe?

Jeg vil gerne at det kun er de guides der kommer frem der hører til produktet...

-------------------------------------

$query = mysql_query("SELECT products_guides.products_guides_name, products_guides_to_guides.products_id, products_guides_to_guides.products_guides_id, products.products_id
                            FROM products_guides
                            INNER JOIN products_guides_to_guides
                            ON products_guides.product_guides_id=products_guides_to_guides.products_guides_id
                            INNER JOIN products.products_id=products_guides_to_guides.products_id
                            WHERE products_guides_to_guides.products_id LIKE '%".$_GET['id']."%'") or die(mysql_error());
$x = 0;
while($row = mysql_fetch_assoc($query)) {
    $x++;
    $bgcolor = $x%2 == 0 ? 'ffffff' : 'eeeeee';
   
    echo '<tr style="background-color:#' .$bgcolor .';"><td>[<a href="#" onclick="confirmdelete(\'products_guides.php?delete=' .$row["product_guides_id"] .'&id='.$_GET["id"].'\');">Slet</a>]</td><td>'.$row['products_guides_name'].'</td></tr>';
}
Avatar billede vagnk Juniormester
23. august 2012 - 16:24 #1
Det er i dine tabelnavne i JOIN-clause det går galt. Hele din JOIN skal omstruktureres.

Prøv at kigge på denne struktur og se om du kan komme videre:
$id = $_GET['id'];
$sel = "SELECT t1.felt1, t1.felt2, t2.felt3, t2.felt4 ";
$sel .= "FROM tabel1 t1 ";
$sel .= "INNER JOIN tabel2 t2 ON t1.id = t2.id ";
$sel .= "WHERE t1.products_id LIKE '%$id%'; ";

Læg mærke til synonymerne t1 og t2.
Avatar billede fkp85 Praktikant
27. august 2012 - 19:21 #2
Jeg kan stadig ikke få det til at virke :/
Avatar billede vagnk Juniormester
28. august 2012 - 02:12 #3
Må jeg prøve at se hvad du rent faktisk skriver? Eventuelt fulgt op af en beskrivelse af de to tabeller.
Avatar billede fkp85 Praktikant
28. august 2012 - 08:45 #4
Indtil videre ser det således ud:

<h2 style="margin-left:10px;">Oversigt over valgte produkt guides for produktet: <br /><?php echo $row["products_name"];?></h2>
<br />

<table style="margin-left:10px;"><tr>
<th style="width:100px;">Rediger</th>
<th style="width:300px;">Product guide</th>
<?php
$query = mysql_query("SELECT products_guides.product_guides_id, products_guides.products_guides_names, products_guides_to_guides.products_id, products_guides_to_guides.products_guides_id FROM products_guides product_guides_id INNER JOIN products_guides_to_guides products_guides_id ON products_guides.products_guides_id = products_guides.products_guides_id WHERE products_guides_to_guides.products_id LIKE '%$id%'; ")
or die(mysql_error());
$x = 0;
while($row = mysql_fetch_assoc($query)) {
    $x++;
    $bgcolor = $x%2 == 0 ? 'ffffff' : 'eeeeee';
   
    echo '<tr style="background-color:#' .$bgcolor .';"><td>[<a href="#" onclick="confirmdelete(\'products_guides.php?delete=' .$row["product_guides_id"] .'&id='.$_GET["id"].'\');">Slet</a>]</td><td>'.$row['products_guides_name'].'</td></tr>';
}

-----------------------------------------------------------
Det kommer med fejlen:
Unknown column 'products_guides.product_guides_id' in 'field list'

Products_guides opretter jeg guides til, så der er der kun id og navn.

Products_guides_to_guides bliver brugt når jeg vælger specifikke guides til et bestemt produkt, de bliver krydset af med flueben og så trykker jeg på vælg, så bliver de valgte guides oprettet i products_guides_to_guides med de relevante oplysninger som du kan se foroven i tråden. Det jeg så prøver på nu er at få vidst de valgte guides for det bestemte produkt jeg nu er inde under via products_guides_to_guides... Håber det giver mening :)
Avatar billede vagnk Juniormester
28. august 2012 - 10:33 #5
Så er det jo det allerførste felt du forsøger at hente, den er gal med (der kan godt være flere fejl). Lad os få et billede af tabellen - eller begge tabeller.
$query = mysql_query("SELECT products_guides.product_guides_id, products_guides.products_guides_names, products_guides_to_guides.products_id, products_guides_to_guides.products_guides_id FROM products_guides product_guides_id INNER JOIN products_guides_to_guides products_guides_id ON products_guides.products_guides_id = products_guides.products_guides_id WHERE products_guides_to_guides.products_id LIKE '%$id%'; ")

Her er det MySQL kvabber sig over fremhævet.

Hvis du arbejder med phpMyAdmin skal du trykke på "Eksporter" eller "Export" på menulinien. I den formular du kommer ind i skal du trykke
"Eksportmetode" - Brugerdefineret.
"Output" - Se output som tekst.
"Formatspecifikke indstillinger" - struktur.
Derefter viser phpMyAdmin dig en side som viser hvordan tabellen er blevet oprettet i sin tid. Det putter du i pastebuffer og sætter ind her.

Som antydet ovenfor kan du lige så godt gøre det for begge tabeller mens du er i gang.
Avatar billede fkp85 Praktikant
28. august 2012 - 14:55 #6
Er det, det her du mener?


Change[`eksempel`.`products_guides`] SELECT * FROM `products_guides`
Change[`eksempel`.`products_guides`] EXPLAIN SELECT * FROM `products_guides`
Change[`eksempel`.`products_guides`] ALTER TABLE `products_guides` DROP PRIMARY KEY
Change[`eksempel`.`products_guides`] ALTER TABLE `products_guides` DROP INDEX `product_guides_id`
Change[`eksempel`.`products_guides`] ALTER TABLE `products_guides` DROP INDEX `product_guides_id_2`
Change[`eksempel`.`products_guides`] ALTER TABLE `products_guides` DROP INDEX `product_guides_id_3`
Avatar billede fkp85 Praktikant
28. august 2012 - 14:56 #7
Kunne ikke se noget inde i eksport som minder om det du skriver?
Avatar billede vagnk Juniormester
28. august 2012 - 20:11 #8
Bruger du phpMyAdmin?

På engelsk/amerikansk er det noget som:
Export Method: Custom - display all possible options
Output:  View output as text
Format-specific options: structure

Håber ikke det er for svært dette her? Det vi skal have fat i er en beskrivelse af tabellen. Hvilke hedder felterne? Hvilken type har de? Er der index på nogle af dem?
Avatar billede fkp85 Praktikant
29. august 2012 - 10:34 #9
Det er phpmyadmin :)

Products_guides:

product_guides_id = int = primary = Auto increment (indexeret)
Products_guides_name = varchar(100)

-------------------------------------------------------------------

Products_guides_to_guides:

Products_guides_to_guides_id = int=primary=Autoincrement(indexeret)
products_id = varchar(30)(indexeret)
products_guides_id = int(indexeret)
Avatar billede vagnk Juniormester
29. august 2012 - 11:19 #10
Dit spørgsmål oprindeligt lyder "joins??? hvordan griber jeg den her opg. an?". Svaret er: Gør som jeg siger.

I #4 fortæller du mig at du får fejlmeldingen
"Unknown column 'products_guides.product_guides_id' in 'field list'"

Det betyder på almindeligt dansk at feltet "product_guides_id" IKKE findes i tabellen "products_guides".

Nu prøver du at bilde mig ind at feltet alligevel eksisterer i din beskrivelse af den første tabel. Er det noget du tror feltet hedder eller har du det et eller andet sted fra? Kunne feltet hedde f.eks. "products_guides.id"?

Vi kommer ikke videre før du tager dig sammen og laver en eksport af tabellen "products_guides", som jeg har beskrevet i #5 og #8. Alternativt, hvis det stadig er for avanceret kan du vælge databasen "information_schema" og i fane SQL sende følgende af sted:
SELECT COLUMN_NAME FROM COLUMNS WHERE TABLE_NAME = 'products_guides';

Hvis heller ikke det virker eller du ikke kan finde ud af det, må vi opgive her eller bede andre om hjælp. Måske udtrykker jeg mig for langhåret? Under alle omstændigheder er den første betingelse for at kunne lave et SQL-statement (herunder osse JOIN) at man benævner tabel- og feltnavne korrekt.
Avatar billede fkp85 Praktikant
29. august 2012 - 13:55 #11
Siger tak for din hjælp, men tror bare vi stopper den her. smid et svar hvis du vil have point.
Avatar billede fkp85 Praktikant
13. september 2012 - 08:46 #12
..
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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