Avatar billede butcher Nybegynder
25. september 2003 - 09:09 Der er 10 kommentarer og
1 løsning

tables join problem

Jeg har følgende kode:

// Request the data
$result = @mysql_query("SELECT * FROM pile WHERE nr = '$_REQUEST[update]'");
if (!$result) {
echo("<p>Error performing query: " . mysql_error() . "</p>");
exit(); }
// Display the data
while ( $row = mysql_fetch_array($result) ) {

den hænger sammen med en form på forrige side hvor jeg så kan indskrive et nr. på den var jeg vil ha frem, meeen mine varer er delt op i flere tables.

Alle tables har nr. i, men aldrig det samme nr.

Hvordan får jeg den til at "finde" varer fra alle tables.. jeg har prøvet med:
$result = @mysql_query("SELECT * FROM pile,gran WHERE nr = '$_REQUEST[update]'");

men så brokker den sig med følgende sætning:

Error performing query: Column: 'nr' in where clause is ambiguous

Så vidt jeg har forstået er det noget med den ikke ved hvordan den skal sortere eller lign, meeen hvordan trixer jeg lige den :)

------------------
Min datastruktur:
# Struktur dump for tabellen `gran`
#

CREATE TABLE `gran` (
  `nr` varchar(15) NOT NULL default '',
  `name` varchar(50) default NULL,
  `size` varchar(20) NOT NULL default '',
  `page` int(3) NOT NULL default '0',
  `ean` int(20) NOT NULL default '0',
  `pieceseur` int(5) NOT NULL default '0',
  `netto` decimal(9,2) NOT NULL default '0.00',
  PRIMARY KEY  (`nr`)
) TYPE=MyISAM;

#
# Data dump for tabellen `gran`
#

INSERT INTO `gran` VALUES ('7', 'Test 2', 'lille', 1, 1156156, 115656, '10.00');

# --------------------------------------------------------

#
# Struktur dump for tabellen `pile`
#

CREATE TABLE `pile` (
  `nr` varchar(15) NOT NULL default '',
  `name` varchar(50) default NULL,
  `size` varchar(20) NOT NULL default '',
  `page` int(3) NOT NULL default '0',
  `ean` int(20) NOT NULL default '0',
  `pieceseur` int(5) NOT NULL default '0',
  `netto` decimal(9,2) NOT NULL default '0.00',
  PRIMARY KEY  (`nr`)
) TYPE=MyISAM;

#
# Data dump for tabellen `pile`
#

INSERT INTO `pile` VALUES ('6', 'Hegn', 'Meget stor', 99, 2147483647, 1, '25.00');
Avatar billede butcher Nybegynder
25. september 2003 - 09:40 #1
har prøvet med:

$result = @mysql_query("SELECT * FROM pile,gran WHERE pile.nr = '$_REQUEST[update]' and gran.nr = '$_REQUEST[update]'");

men så kommer der intet og med

$result = @mysql_query("SELECT * FROM pile,gran WHERE pile.nr = '$_REQUEST[update]' or gran.nr = '$_REQUEST[update]'"); kommer der kun data ud fra "gran" :)
Avatar billede erikjacobsen Ekspert
25. september 2003 - 09:46 #2
Jeg vil anbefale dig at lave din struktur om, så du kun har een tabel.
Den skal indholde de samme felter som fx gran, + et ekstra til at afgøre
om rækken er "gran" eller "pile" eller ... hvad du nu registrerer.
Avatar billede butcher Nybegynder
25. september 2003 - 09:50 #3
problemet er at der er forskellige egenskaber på varene, alt efter hvad gruppe de hører under, så hvis jeg sq samle det i en tabel, vil der komme en masse tomme felter, og det er vel ikke helt optimalt :)

Jeg overvejer at lave en ny tabel hvor der er et "id" og "nr" i, og så evt. kunne trække noget ud fra den, burde kunne lade sig gøre, men hvis der var ene anden simpel løsning på det overstående problem, så vil det være super :)
Avatar billede erikjacobsen Ekspert
25. september 2003 - 10:03 #4
I det du har anført her er der præcis de samme egenskaber ;)

Men du kan samle de fælles egenskaber i een tabel, og så lave noget
til de specialiserede - men hvordan afhænger jo af dine konkrete data.
Avatar billede butcher Nybegynder
25. september 2003 - 10:23 #5
ah ye i de 2 tables er det samme egenskaber, men er også bare en test :)

det lyder som om jeg skal lave min struktur om, sådan læser jeg mig også frem til det, men giver det lige lidt tid endnu til folk kan komme med ide'er :)
Avatar billede morpheus Nybegynder
25. september 2003 - 13:22 #6
Jeg blander mig lige...

Sådan lige for at debugge, har du så prøvet at udskrive indholdet af: $_REQUEST['update'], på den side?
Avatar billede butcher Nybegynder
25. september 2003 - 13:58 #7
nej hvordan gør jeg det.... er sq stadig noget grøn :)

altså den kan godt få fat i $_REQUEST['update'] hvis det kun er fra en tabel.. eg:

$result = @mysql_query("SELECT * FROM pile WHERE nr = '$_REQUEST[update]'");
Avatar billede morpheus Nybegynder
25. september 2003 - 14:17 #8
Prøv med:
print $_REQUEST['update'];

Prøv engang med flg. SQL sætning:

$result = mysql_query("SELECT * FROM pile,gran WHERE pile.nr = '".$_REQUEST['update']."' and gran.nr = '".$_REQUEST['update']."'") or die(mysql_error());
Avatar billede butcher Nybegynder
25. september 2003 - 15:10 #9
$result = mysql_query("SELECT * FROM pile,gran WHERE pile.nr = '".$_REQUEST['update']."' and gran.nr = '".$_REQUEST['update']."'") or die(mysql_error());

giver mig intet, der kommer ikke noget ud på siden.

jeg prøver at lige den print $_REQUEST['update']; .. hvis jeg kan lure hvor den skal ind :)
Avatar billede butcher Nybegynder
25. september 2003 - 15:12 #10
print $_REQUEST['update']; når jeg smider den ind, f.eks. lige over $result linien skriver den korrekt nok ud, den data som jeg havde indtastet i "formen"

Så det funker korrekt nok.
Avatar billede butcher Nybegynder
29. september 2003 - 11:34 #11
har fundet en løsning, måske ikke den bedste, men det virker fint fint :)

Ellers tak for ide'erne morpheus
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