Avatar billede ra__mus Nybegynder
08. august 2003 - 21:43 Der er 10 kommentarer og
1 løsning

skal sammenholde to tabeller

Jeg har to tabeller, hvor jeg vil se om en given værdi af id, som findes i tabellen tilm, også findes i tabellen indsaet.
Jeg har skrevet følgende, men der finder den en værdi for id som er i begge tabeller.Den skulle kun komme med et resultat hvis værdien af id ikke findes i tabellen indsaet men kun i tabellen tilm


$sql ="SELECT tilm.id
FROM tilm LEFT JOIN indsaetON tilm.id=indsaet.id
WHERE indsaet.id IS NULL";
//$query = mysql_query($sql) or die(mysql_error());
$sql="SELECT * FROM tilm where id=tilm.id";
$query = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_array($query)) {
Avatar billede ra__mus Nybegynder
08. august 2003 - 21:48 #1
ingen hurtige bud :)
Avatar billede nicklasb Nybegynder
08. august 2003 - 22:38 #2
for det første; Hvorfor har du //'et din første udførsel af din quary.
for det andet; Du skriver: Vælg id fra tabellem tilm, link en tabel hvor id'erne er det samme, og vælg KUN dem hvor id'et fra den anden tabel er lig ingen ting. (Det vil altså betyde at de begge skal være lig med igen ting?

Jeg syntes det står en smule (læs: MEGET) uklart hvad det er du vil. Så hvis du vil have mig til at lave en SQL-kode til dig, bliver du nok lige nød til at give et eksempel..

Men kig evt på muligheden for flere krav i dit JOIN kald. Altså fx
LEFT JOIN indsaet ON tilm.id = indsaet.id AND indsaet.id IS NULL
(hvis det er det du vil ?!?)
eller muligheden for at sige IKKE lig med.. Altså med en ! foran dit lig med. Fx.
LEFT JOIN indsaet ON tilm.id != indsaet.id AND indsaet.id IS NULL

Og så til at slutte med, vil det nok være en RIGTIG god ide at dele den lidt op med nogle mellemrum. Her tænker jeg fx. på dit ON lige efter kollonne-navnet. Ikke så heldigt.

Men som sagt, jeg hjælper gerne, men forstår desværre ikke lige helt 100% hvad det er du vil ?!?
Avatar billede ra__mus Nybegynder
08. august 2003 - 22:54 #3
Godt.
jeg har to tabeller hver indeholdende et felt der hedder id.

I den ene tabel er der to poster med hver sin id værdi.
Jeg vil så se om der findes nogle poster i den anden tabel der har disse id værdier. Dvs hvis ikke skal den skrive en tekst, feks posten er slettet .

Håber du kan hjælpe ...
Avatar billede nicklasb Nybegynder
08. august 2003 - 23:17 #4
SÅ er den også som du allerede selv har forslået.. Du skal bare have sat et mellemrum ind efter indsaet og før ON.. Så der kommer til at stå:

SELECT tilm.id FROM tilm LEFT JOIN indsaet ON tilm.id=indsaet.id WHERE
indsaet.id IS NULL

Den burde gerne udskrive alle poster i tilm som har et id som ikke optræder i indsaet. Forstår så stadig ikke helt hvilken af tabellerne de fleste data ligger i. Men det er jo så bare at bytte rundt på tabelnavnene.. ;D
Avatar billede ra__mus Nybegynder
08. august 2003 - 23:30 #5
De fleste poster ligger i indsaet !

Den skriver bare alle de poster ud som ligger i tabellen tilm

Jeg bruger følgende kode :

$sql ="SELECT tilm.id, indsaet.id FROM tilm LEFT JOIN indsaet ON tilm.id != indsaet.id is null";
$query = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_array($query)) {
echo "


}

Jeg ved ikke hvad der er galt ????
Avatar billede ra__mus Nybegynder
08. august 2003 - 23:34 #6
næ med dit forslag tror jeg det virker nu...
checker lige igen..
Avatar billede ra__mus Nybegynder
08. august 2003 - 23:38 #7
det virker, takkker :)

læg et svar
Avatar billede nicklasb Nybegynder
08. august 2003 - 23:39 #8
ok, svar! ;D
Avatar billede stroke1 Nybegynder
09. august 2003 - 00:12 #9
øh det virker sku ikke alligevel øv øv

den skriver også nogle den ikke skal ??
Avatar billede stroke1 Nybegynder
09. august 2003 - 00:24 #10
jeg skriver efter det andet dette :

$sql="SELECT * FROM tilm where id=tilm.id";
$query = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_array($query)) {
echo "

}

er det forkert ??
Avatar billede nicklasb Nybegynder
09. august 2003 - 08:47 #11
ja.. også derfor jeg spurgte hvorfor du skrev to sql-sætninger ?!?
Den anden spytter resultatet ud med det samme. Altså:

$sql="SELECT tilm.id FROM tilm LEFT JOIN indsaet ON tilm.id=indsaet.id WHERE
indsaet.id IS NULL";
$query = mysql_query($sql) or die(mysql_error());
$print = 'Poster der KUN findes i tabellen tilm:<br><br> ';
while ($row = mysql_fetch_array($query)) {
$print .= $row['id'] . ' ';
}
echo $print;

Det du har skrevet i din sidste kommentar er noget vrøvl. Du bruger for det første slet ikke den sql vi udledte før, og i den du har skrevet til sidst tager du alle poster.
Da du kun har en tabel includeret i dit udtræk er det jo lige meget om du sætter tabel-navnet foran de forskellige kollonnenavne. Så det du skriver er:

Vælg alt data fra tabellen tilm hvor id'et på posten er lig id'et på posten.
Og da du jo tjekker for HVER post vil det sige at du skrive WHERE 1 = 1, WHERE 2 = 2 osv. Og det vil jo altid være sandt. Derfor alle dataene kommer.

Hvis du absolut VIL have to gange sql-sætninger, skal du hente id'et fra den første ud lgie som du gør i din sidste kommentar (bare med den lange sql-sætning), og herefter søge på dette id i din næste sql-sætning så der kommer til at stå:
$sql = "SELECT * FROM tilm where id = $IdFraForrigeUdtraek";

Er dog kun unødvendigt og sløvende for dit script. Så undlad den, og skriv i stedet bare som jeg skrev i linie 4 i denne kommentar :D

/Nicklas B.
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

IT-JOB

BEC Financial Technologies

Business Continuity Manager - Technical

Politiets Efterretningstjeneste

GenAI-specialist i PET

Capgemini Danmark A/S

AI Data Architect