Gå til innhold

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


Anbefalte innlegg

Skrevet (endret)

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
Videoannonse
Annonse
Skrevet (endret)

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
Skrevet (endret)
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
Skrevet

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.

Skrevet
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

Skrevet

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...

Skrevet
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..

Skrevet (endret)

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
Skrevet (endret)
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
Skrevet (endret)

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
Skrevet
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å!

Skrevet
Dytt alle verdiene inn i en array davel og bruk sort() eller array_multisort() ?

5103716[/snapback]

 

Det er nok en lur løsning.

 

Noen som kan hjelpe meg litt på vei?

Skrevet (endret)

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

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...