Avatar billede nemlig Professor
07. januar 2008 - 22:51 Der er 12 kommentarer og
1 løsning

1 Select i 2 tabeller

Jeg har en database med 2 tabeller med forskelligt indhold.
I tabel 1 har jeg 2 felter, der hedder [faktura1] og [faktura2].
I tabel 2 har jeg 1 felt, der hedder [faktura3].
Jeg har så en input-variabel, der hedder $faknr.

Hvordan kan jeg med 1 Select hente posterne fra begge tabeller, hvor et af de 2 fakturanr. indeholder værdien $faknr.
Hvis der kun skulle hentes i 1 tabel, ville jeg gøre det sådan her:

$sql = "SELECT * FROM tabel1 WHERE  fakturanr1 = '".$nr."' OR fakturanr2 = '".$nr."'";
$res = database($sql);

Og så lister jeg med while........
Avatar billede erikjacobsen Ekspert
07. januar 2008 - 22:54 #1
Du kan jo gøre det i 2 SQL-kald - så ... det ...

Men ellers: har de to tabeller præcis de samme felter, eller er det de samme felter du vil have ud fra begge tabeller?
Avatar billede arne_v Ekspert
07. januar 2008 - 23:02 #2
UNION ?
Avatar billede nemlig Professor
07. januar 2008 - 23:04 #3
Jeg vil gerne i 1 kald, hvis muligt, da jeg gerne vil kunne sortere på de Selectede data fra begge tabeller. Der er flere felter, men mere for metodens skyld, nævner jeg kun nogle af dem. Jeg kan se, at jeg ikke har forklaret det ordentligt ovenfor.

De 2 tabeller har ikke samme feltnavne og antal.
Tabel 1 har 2 felter ('faktura1' og 'faktura2')
Tabel 2 har 1 felt ('faktura3')
Avatar billede erikjacobsen Ekspert
07. januar 2008 - 23:17 #4
Du kan ikke i een SELECT blande forskellige felter (ellers kunne du lave en UNION mellem 2 SELECTs, men det kræver altså eens felter).

Lav 2 SELECTs og bruge det bagvedliggende scriptsprog til at samle data og sortere - en smule Object Orienteret programmering, formentlig en gang nedarvning - så klarer du sikkert den.

Ellers kunne det være din databasestruktur kunne overvejes...
Avatar billede nemlig Professor
07. januar 2008 - 23:20 #5
OK - jeg tror jeg laver 2 SELECTS og smider det i et fælles ARRAY, som jeg sorterer og lister.
Jeg prøver lige og giver en melding senere (i morgen). Tak for inputtet.
Avatar billede nemlig Professor
08. januar 2008 - 00:21 #6
Så fik jeg det til at virke med 2 Selects, hvor jeg smider det i et Array og trækker ud der fra.
Tak for inputtet Erik. Er du begyndt at sende point, så kender du jo proceduren. :-)
Avatar billede arne_v Ekspert
08. januar 2008 - 03:22 #7
Hvis data alligevel skal puttes i en ens struktur for at kunne bliver sorteret, så
må man vel også kunne lave en UNION hvor den SELECT med færrest felter er suppleret
med nogle NULL.
Avatar billede nemlig Professor
08. januar 2008 - 08:06 #8
Åh ja -det kan jeg godt se. Men hvordan sætter jeg det/de manglende felter til NULL?
Avatar billede erikjacobsen Ekspert
08. januar 2008 - 08:35 #9
SELECT NULL AS dummy, ...

Men, altså, hvor meget ligner de hinanden?
Avatar billede nemlig Professor
08. januar 2008 - 09:24 #10
De er meget forskellige. De har bare begge 2 nogle felter med fakturanumre, som jeg vil liste samlet i fakturanr.-orden. Men jeg har det til at virke via 2 x Select og 1 Array.
Avatar billede nemlig Professor
24. februar 2008 - 11:42 #11
Jeg lukker, da det kører med 2 x Select og 1 Array. Tak for jeres bidrag. Send venligst et svar, og jeg fordeler pointene.
Avatar billede erikjacobsen Ekspert
24. februar 2008 - 11:53 #12
Ingen point til mig, tak.
Avatar billede arne_v Ekspert
24. februar 2008 - 14:56 #13
svar
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