WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   hjälp med sql-fråga, vet knappt var jag ska börja... (https://www.wn.se/forum/showthread.php?t=1051744)

znap 2012-01-07 14:55

hjälp med sql-fråga, vet knappt var jag ska börja...
 
Hej!

Jag har fått så bra hjälp med sql-frågor här tidigare så jag tänkte jag skulle pröva min lycka igen.

Tabellen ser ut på följande sätt:

Kod:

entity | name | type
-------------------------------
300 | Gerard Butler | actor1
300 | David Wenham | actor2
300 | http://.... | image
Apollo 13 | Tom Hanks | actor1
Apollo 13 | Kevin Bacon | actor2
Apollo 13 | http://.... | image

Först hade jag följande sql-query
Kod:

SELECT entity, name FROM prefix_entity WHERE type ='actor1' ORDER BY RAND() LIMIT 0,5
Den gav mig 5 slumpade huvudroller från tabellen. Men hur ska frågan formuleras om jag även vill få ut den raden där kolumnen type har värdet image och kolumnen entity har samma värde som det slumpade? Jag vill alltså få ut 5 slumpade huvudroller och bilden på filmen, går det att få till med en fråga?

Mvh Vic

znap 2012-01-07 17:20

Tror jag har löst det med:
Kod:

SELECT prefix_entity.* FROM (
        SELECT DISTINCT(entity) FROM prefix_entity
        ORDER BY RAND() LIMIT 0,5
        ) q
JOIN prefix_entity
ON prefix_entity.entity = q.entity
ORDER BY q.entity;

Men det verkar gå gräsligt segt pga ORDER BY RAND(). För att snabba upp det kör jag på en slumpad LIMIT istället, typ:
Kod:

<?php
$num_rows = $db->getNumRows('min_tabell');
$rowset = $db->query('SELECT prefix_entity.* FROM (
        SELECT DISTINCT(entity) FROM prefix_entity
        LIMIT '.(mt_rand(0, $num_rows-5).',5
        ) q
JOIN prefix_entity
ON prefix_entity.entity = q.entity
ORDER BY q.entity;');

Om någon har ett bättre förslag (förutom att ändra själva tabellstrukturen) tas det tacksamt emot.


Alla tider är GMT +2. Klockan är nu 17:16.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson