Gå til innhold

Spørring i spørring i MySQL! Trenger hjelp!


Anbefalte innlegg

Hei, prøver å kjøre følgende spørring...

 

$squery = mysql_query("SELECT n, m FROM test AS (SELECT navn AS n, mail AS m FROM p WHERE fid='$id' ORDER BY id LIMIT '$var') ORDER BY n")

 

Skjønner ikke hvorfor det ikke fungerer.. men er ganske trøtt nå, noen som kan hjelpe?

Endret av erlingwe
Lenke til kommentar
Videoannonse
Annonse

Vel, jeg pleier å gjøre slik:

$squery = mysql_query("SELECT navn AS n, mail AS m FROM p WHERE fid='$id' ORDER BY id LIMIT '$var'")

$resultat = mysql_fetch_array($squery);

 

$squery = mysql_query("SELECT n, m FROM test AS ($resultat[0]) ORDER BY n")

 

(tror det var noe lignende det)

Endret av missiongul
Lenke til kommentar
Vel, jeg pleier å gjøre slik:

$squery = mysql_query("SELECT navn AS n, mail AS m FROM p WHERE fid='$id' ORDER BY id LIMIT '$var'")

$resultat = mysql_fetch_array($squery);

 

$squery = mysql_query("SELECT n, m FROM test AS ($resultat[0]) ORDER BY n")

 

(tror det var noe lignende det)

5103452[/snapback]

 

Hei, takk for tipset, men det fungerer fortsatt ikke.. ($resultat[0]) vil vel bare gi det første elementet i arrayen??

 

 

Dette er den fullstendige koden:

 

$squery = mysql_query("SELECT navn AS n, mail AS m FROM paameldt WHERE f_id='$id' ORDER BY id LIMIT $bespisnings");

$rss = mysql_fetch_array($squery);

$ssquery = mysql_query("SELECT n, m FROM test AS ($rss) ORDER BY n");

while($rs = mysql_fetch_array($ssquery)) {

$navn = $rs["n"];

$mail = $rs["m"];

echo"$navn - $mail"?><br>

<?

}

 

Men får altså feilmelding..

Endret av erlingwe
Lenke til kommentar
Hvilken feilmelding får du ? Sleng på en or die(mysql_error()) etter mysql_query, så ser du det nok...

Husk at $rss er et array. Hvorfor skal du i det hele tatt ha et alias på tabellen test ? Går vel ikke an med et array som alias.

5103592[/snapback]

 

Trenger sikkert ikke bruke alias nei,

 

 

Feilmelding:

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY n' at line 1

 

dvs denne setningen: SELECT n, m FROM $rss[0] ORDER BY n

Lenke til kommentar

Kan jeg få spørre om hva det egentlig er du skal oppnå ?

Du henter altså navn og mail fra tabellen paameldt. Skal du bruke det du henter derfra i den neste spørringen ? Isåfall i hvilken sammen heng ?

Har du felt som heter n og m i tabellen test ?

 

Skriv ut spørringen når den feiler, så ser du hvordan den blir, og hvorfor den feiler...

Lenke til kommentar
Kan jeg få spørre om hva det egentlig er du skal oppnå ?

Du henter altså navn og mail fra tabellen paameldt. Skal du bruke det du henter derfra i den neste spørringen ? Isåfall i hvilken sammen heng ?

Har du felt som heter n og m i tabellen test ?

 

Skriv ut spørringen når den feiler, så ser du hvordan den blir, og hvorfor den feiler...

5103629[/snapback]

 

Hei,

 

Det jeg skal:

 

1. Har x antall påmeldte til et foredrag med f_id='$id'

2. Skal hente ut de y første

3. Deretter sortere dem alfabetisk...

 

Har ingen tabell som heter test..

 

Derimot tabellen paameldt med feltene: navn, mail, id, f_id etc..

Lenke til kommentar

Burde ikke denne gjøre jobben, da:

$sql = "SELECT navn AS n, mail AS m FROM paameldte WHERE f_id=$id ORDER BY n LIMIT y";
$res = mysql_query($sql) or die("Feil i spørring: $sql<br>".mysql_error());
while ($row = mysql_fetch_array($res)) {
  echo "Navn: ".$row['n']."<br> Mail: ".$row['m']."<br>";
}

Med forbehold om små "tullefeil"

 

EDIT: Regner da med at du får $id fra url eller en form. Hentes vha $id = $_REQUEST['id'] (Bør byttes til $_GET eller $_POST, alt etter om det er fra GET (f.eks. fra url) eller post (Fra form)

 

EDIT2: Og y skal da byttes med hvor mange av de første postene du vil vise.

Endret av kakkle
Lenke til kommentar
Burde ikke denne gjøre jobben, da:

$sql = "SELECT navn AS n, mail AS m FROM paameldte WHERE f_id=$id ORDER BY n LIMIT y";
$res = mysql_query($sql) or die("Feil i spørring: $sql<br>".mysql_error());
while ($row = mysql_fetch_array($res)) {
  echo "Navn: ".$row['n']."<br> Mail: ".$row['m']."<br>";
}

Med forbehold om små "tullefeil"

 

EDIT: Regner da med at du får $id fra url eller en form. Hentes vha $id = $_REQUEST['id'] (Bør byttes til $_GET eller $_POST, alt etter om det er fra GET (f.eks. fra url) eller post (Fra form)

5103675[/snapback]

 

Beklager..

 

Det er jo det som er hele poenget: Hvis jeg bruker den koden din vil den kun printe ut de y første sortert alfabetisk..

 

I praksis alle med navn på A, dvs aasen, andersen, osv..

 

Men jeg vil den skal hente ut de som registrerte seg først (har lavest id) - og deretter sortere dem alfabetisk!

 

Alstå gitt tabellen:

 

1. olsen

2. andersen

3. aasen

4. hansen

 

Med y = 2 skal den da skrive ut : andersen, olsen... skjønner?

 

Derfor jeg trenger en spørring i en spørring.. evt. sortere arrayen på en annen måte..

Endret av erlingwe
Lenke til kommentar

uten at jeg har gjort dette på veldig lenge, men kan du ikke bruke

$sql = "SELECT navn AS n, mail AS m FROM paameldte WHERE f_id=$id ORDER BY <IDFELT_I_PAAMELDTE> LIMIT y";
$res = mysql_query($sql) or die("Feil i spørring: $sql<br>".mysql_error());
while ($row = mysql_fetch_array($res)) {
 echo "Navn: ".$row['n']."<br> Mail: ".$row['m']."<br>";
}

Altså bytt ut <IDFELT_I_PAAMELDTE> med det som er id feltet i paameldtetabellen?

Endret av Nazgul
Lenke til kommentar
uten at jeg har gjort dette på veldig lenge, men kan du ikke bruke

$sql = "SELECT id AS i, navn AS n, mail AS m FROM paameldte WHERE f_id=$id ORDER BY i LIMIT y";
$res = mysql_query($sql) or die("Feil i spørring: $sql<br>".mysql_error());
while ($row = mysql_fetch_array($res)) {
  echo "Navn: ".$row['n']."<br> Mail: ".$row['m']."<br>";
}

Altså legge inn id AS i og ORDER BY i ?

5103707[/snapback]

 

neineinei...

 

Det er jo ikke noe stress å sortere på id, det som er stress er å sortere alfabetisk etterpå!

Lenke til kommentar

At man må trå til med sortering i PHP i det tilfellet er overhode ikke bra siden det er betydelig raskere å gjøre det i databasen. Følgende spørring bør fungere om jeg ikke har bommet grovt:

SELECT * FROM paameldte WHERE (SELECT navn AS n, mail AS m FROM paameldte WHERE fid='$id' ORDER BY id LIMIT '$var') ORDER BY navn

Endret av Ernie
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...