![]() |
|
|
|||||||
| Databashanterare & SQL Diskussioner om databashanterare och SQL. Exempelvis DML, DDL, MySQL, MS SQL Server samt datamodellering. |
![]() |
|
|
Trådverktyg | Visningsalternativ |
|
|
#1 |
|
Medlem
Registrerad: 2000-12-16
Ort: Stockholm
Inlägg: 1 625
Lösningar: 0 |
Kombinera flertal MySQL satser till en
Tjena,
Håller på att utveckla ett PHP skript till ett iPhone spel och använder MySQL för att utföra en rad olika SELECT-satser, men jag har nu snabbt knackat mig in i ett hörn.. Jag sitter här nu med flera ineffektiva SELECT-satser som är beroende utav varandra. T ex om jag ska plocka ut motståndarens användarnamn ur users så måste jag gå den här omvägen för att slutligen få det jag behöver: PHP-kod:
Är det möjligt att på något sätt effektivisera det hela? Och begränsa mängden SQL satser? Oerhört tacksam för, Gimbo
__________________
J.Kerkinni en grymt bra Mode Blogg Senast redigerad av Gimbo, 2012-06-06 klockan 01:44 |
|
|
|
|
|
#2 |
|
Medlem
Registrerad: 2009-12-10
Ort: Bangalore
Inlägg: 816
Lösningar: 11 |
1. Jag vet inte om du har tillgång till Access? Men i Access kan man skapa frågor via att klicka sig fram i olika menyer. Sen kan man få ut SQL koden som dessa klick har genererat.
Det finns säkert även i andra program och gränssnitt. Det kan vara en bra hjälp på vägen, även om koden som genereras sällan är den mest optimala. 2. "SELECT p.strName AS parent_strName, c.strName AS child_strName from [CHILDREN] c LEFT JOIN [PARENT] p on c.intParentID = p.intID order by c.intID, p.intID" Detta är en modifierad kod från ett annat sammanhang som likar det du beskriver. (Om jag nu inte råkar blanda på PARENT och CHILDREN.) Loop1: SELECT intID FROM [PARENT] Loop2: SELECT intID FROM[CHILDREN] WHERE intParentID = p.intID Ja... jag vet inte om det hjälper dig åt rätt håll, men du kanske kan pussla vidare på det sätt som ditt problem lutar åt? |
|
|
|
|
|
#3 |
|
Medlem
Registrerad: 2009-12-10
Ort: Bangalore
Inlägg: 816
Lösningar: 11 |
Ja, men nu uppdaterar du ju mitt i natten!! :-)
Din databas är felkostruerad: [users] intID strUsername [allGames] intID intGamerID <--- spelaren intOpponentID <--- motståndaren *** Lista alla spel: SELECT a.intID, u.strUsername As strGamer, u.strUsername As strOpponent FROM [allGames] a, [users] u WHERE a.intGamerID = u.intID AND a.intOpponentID = u.intID ORDER BY a.intID Notering: [allGames] borde heta [games] Jag har aldrig plockat två ID från samma tabell på det viset. Det kanske inte fungerar?? Hur som helst så tror jag det blir mindre skriverier för dig om du gör databasen som jag beskriver ovan. Hur ser din ut? Jag har ju bara gissat...!! |
|
|
|
|
|
#4 |
|
Medlem
Registrerad: 2004-07-30
Inlägg: 227
Lösningar: 0 |
|
|
|
|
|
|
#5 |
|
Medlem
Registrerad: 2003-03-16
Ort: Stockholm
Inlägg: 3 377
Lösningar: 64 |
Så här får du ut allt på en gång:
PHP-kod:
civilpolisen - Det är lite farligt att föreslå hur någons tabellstruktur bör se ut om man inte vet något om hur den är tänkt att fungera. Det kanske finns flera opponents till varje game i Gimbos struktur? Då funkar inte ditt förslag. Dock undrar jag också Gimbo varför inte kolumnen med namnet id i allGames är unik? Det är en lite konstig namngivning åtminstonde eftersom man just brukar låta namnet id sitta på PRIMARY KEYs eller andra unika fält. Om allGames är en relationstabell som knyter ihop spelare med spel så kan man ge båda ingående id-nycklar förklarande tillägg i den nya kolumnen tex: (GameID, UserID, ....) hellre än (id, UserID, ...) eftersom det senare får folk att tro att id är unik i den här tabellen (allGames). |
|
|
|
|
|
#6 | |
|
Medlem
Registrerad: 2009-12-10
Ort: Bangalore
Inlägg: 816
Lösningar: 11 |
Citat:
Det är så underhållande med folk som läser delar av ett inlägg och svarar som en byfåne! Det händer ofta på detta forumet! Du är i gott sällskap!! :-) |
|
|
|
|
![]() |
| Trådverktyg | |
| Visningsalternativ | |
|
|