Avatar billede jacobs1 Nybegynder
26. august 2006 - 10:48 Der er 6 kommentarer

Sammensæt 2 sql sætninger.

Hej eksperten.

Jeg sidder og bøvler med at lave et optræk fra 2 tabeller i samme sql sætning.

Jeg kan godt få det til at virke hvis jeg laver 2 sql sætningern + to løkker til at skrive felterne ud med.

Er der nogle der kan hjælpe mig med at lave mine 2 sql sætning om til en.? Ellers virker min "vis kun 25 poster af gange funktion nemlig ikke"

Sådan ser min sql ud:

$queryALL = mysql_query("SELECT * FROM firmaer, events WHERE firmaer.Id=events.BrugerNr AND events.Underkategori='$str' ORDER BY firmaer.Id DESC LIMIT $offset,$pr_side") or die (mysql_error());


while($rowAll = mysql_fetch_array($queryALL)) {
echo $rowALL['Navn'];
array_push($a,$rowAll['BrugerNr']);
}

$queryDD = mysql_query("SELECT * FROM firmaer WHERE Id NOT IN(".implode(',', $a).") AND Underkategori='$str' ORDER BY id DESC LIMIT $offset,$pr_side") or die (mysql_error());

while($rowADD = mysql_fetch_array($queryDD)) {

echo $rowADD['Navn'];
}

Det som sql sætningen gør er at den først finder alle de poster i tabellen events som har en underkategori der er rigtig, disse skriver den ud og putters i et array.

i sql sætning 2 skriver den alle posterne ud i tabellen firmaer der har en kategori der er rigtig undtaget dem der blev udskrivet i løkke nr.1.

Håber der er nogle der kan hjælpe mig med at sammenkæde disse 2 sql sætninger til en.

på forhånd tak!
Avatar billede kjulius Novice
26. august 2006 - 12:07 #1
Lyder som om, det du har brug for er en LEFT JOIN:

$queryALL = mysql_query("SELECT * FROM firmaer LEFT JOIN events ON firmaer.Id=events.BrugerNr WHERE events.Underkategori='$str' OR events.Underkategori IS NULL ORDER BY firmaer.Id DESC LIMIT $offset,$pr_side") or die (mysql_error());
Avatar billede jacobs1 Nybegynder
26. august 2006 - 12:49 #2
Mange tak for dit svar..
Det er tæt på men ikke helt rigtigt :)

Det er godt nok svært at forklare, og jeg kender slet ikke noget til LEFT JOIN, men jeg prøver :)

Tag alle posterne fra tabellen events med underkategorien ='$str' brug events.BrugerNr til at finde firmaer.Navn fra tabellen firmaer (events.BrugerNr og firmaer.Id Passe sammen). Udskriv firmaer.Navn som har en celler i events tabellen.

- Når det er gjort skal den så skrive resten af cellerne ud i firmaer tabellen hvor underkategori=='$str'.

med andre ord:

Jeg vil gerne have udskrevet alle de firmanavne der har et event med den rigtige underkategori. og bagefter have udskrevet resten af firmanavnerne der har en rigtig underkategori .

Håber det giver mening.
Avatar billede jacobs1 Nybegynder
26. august 2006 - 13:06 #3
Kan det ikke passe det skal se sådan her ud?

$queryALL = mysql_query("SELECT * FROM firmaer LEFT JOIN events ON firmaer.Id=events.BrugerNr WHERE events.Underkategori='$str' OR firmaer.Underkategori='$str' ORDER BY firmaer.Id DESC LIMIT $offset,$pr_side") or die (mysql_error());
Avatar billede kjulius Novice
26. august 2006 - 13:18 #4
Hmm.. Jo, det ser umiddelbart rigtigt ud (hvis jeg har forstået dit behov rigtigt). Måske skulle du tilføje events.Underkategori på din ORDER BY, hvis du ønsker alle de rækker, hvor der er en event sorteret øverst.

ORDER BY events.Underkategori, firmaer.Id DESC
Avatar billede jacobs1 Nybegynder
26. august 2006 - 13:27 #5
Mange tak! læg et svar så du kan få dine point :)

Du mener sådan her:

$queryALL = mysql_query("SELECT * FROM firmaer LEFT JOIN events ON firmaer.Id=events.BrugerNr WHERE events.Underkategori='$str' OR firmaer.Underkategori='$str' ORDER BY events.Underkategori, firmaer.Id DESC LIMIT $offset,$pr_side") or die (mysql_error());
Avatar billede kjulius Novice
26. august 2006 - 16:03 #6
Ja, det ser rigtigt ud (igen, hvis jeg har forstået dine behov :-), men egentlig er det jo kun dig, der kan afgøre om resultatet er tilfredsstillende... ;-)
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