Avatar billede pgm Nybegynder
23. marts 2003 - 21:15 Der er 21 kommentarer og
1 løsning

database udtræk?

Hej!

Jeg har en side hvor jeg har nogle spil liggende...

I databasen (mysql) er der:
Games Tabellen:
GamesID; Name; PublisherID, ProducerID; CopyrightID

Jeg har så firma navnene liggende i en tabel kaldet
Company:
CompanyID; Company; Link


Nu vil jeg gerne have trukket disse ud til at kunne give mig:

Spilnavnet; publisher navnet, producer navnet, copyright navnet.


$result = mysql_query("SELECT games.*, company.* FROM games, company WHERE games.PublisherID = company.CompanyID;") or die();
  $thegame = mysql_fetch_array($result);
      $title = $thegame[Name];
      $developer = $thegame[Company];
      $kategori = $thegame[Genre];


Hvordan går jeg dette?
Avatar billede andy Nybegynder
23. marts 2003 - 22:27 #1
$res = mysql_query("SELECT games.name, company.* FROM games, company WHERE PublisherID=CompanyID") or die (mysql_error());
while ($row = mysql_fetch_array($res)) {
extract($row);
echo "$name; $company,
Avatar billede andy Nybegynder
23. marts 2003 - 22:29 #2
DOOH, skulle til at slette det hele for at skrive dette:

Du bliver nødt til at bruge 3 queries for at hente det.
Avatar billede pgm Nybegynder
23. marts 2003 - 22:34 #3
Der må da være en mulighed for at lave en samlet query string...
Avatar billede andy Nybegynder
23. marts 2003 - 22:48 #4
nej, ikke med den database struktur du har nu.
Avatar billede pgm Nybegynder
23. marts 2003 - 23:11 #5
Har du så et forslag til en ændret database struktur ?

Den er lavet udfra tanken om at der ikke må være gentagelser i databasen...
Avatar billede fn1977 Nybegynder
23. marts 2003 - 23:13 #6
mmh lyder som om du skal lave inner joints
Avatar billede fn1977 Nybegynder
23. marts 2003 - 23:22 #7
hved ikke om jeg kan overskue dit spørgsmål

det virker som om du spørger til et query der rækker over 4 tabeller

games
publisher
producer
copyright

er det rigtigt ?
Avatar billede pgm Nybegynder
23. marts 2003 - 23:25 #8
Nej...

Jeg har en tabel med Spillende...

i denne tabel er der så 3 kolloner med publisherID, copyrightID, ProducerID

disse 3 henviser til CompanyID i tabellen Company, hvor jeg så skal have navnet på Firmaet udtrukket (denne kollone heder Company).
Avatar billede fn1977 Nybegynder
23. marts 2003 - 23:34 #9
$query = "SELECT g.Name,
                c.Company
          FROM games g, company c
          WHERE g.PublisherID = c.CompanyID";

$result = mysql_query($query, $connection);
  die("could not run query")

while ($row = @ mysql_fetch_array($result))
{
  echo $row["name"] . " " . $row["company"];
  }
Avatar billede fn1977 Nybegynder
23. marts 2003 - 23:41 #10
vil det sige at

games.publisherID peger på company.publiherID
games.copyrightID peger på company.copyrightID
games.ProducerID peger på company.CompanyID
Avatar billede pgm Nybegynder
23. marts 2003 - 23:48 #11
games.publisherID == company.companyID
games.copyrightID == company.companyID
games.ProducerID == company.companyID
Avatar billede fn1977 Nybegynder
23. marts 2003 - 23:57 #12
og det du vil er at hente company.Company og games.name der hvor alle disse id er ens
Avatar billede fn1977 Nybegynder
23. marts 2003 - 23:58 #13
eller vil du hente company.Company for hver af disse tre games.*ID
Avatar billede pgm Nybegynder
24. marts 2003 - 00:05 #14
Jeg vil hente informationen om hvilket firma der har publisheret spillet, hvilket firma der har copyright på spillet og hvilket firma der har produceret dette....
Alle mine firma navne ligger i tabellen 'company' det unikke ID i denne tabel er det samme som det man kan finde i Games.PublisherID, Games.copyrightID og games.producerID
Avatar billede pgm Nybegynder
24. marts 2003 - 00:09 #15
et eksembel (fiktivt):

Company: (CompanyID  Company)

5 Origin
6 IDSA
7 Namco
8 Atari 


Games: (GamesID  Name  PublisherID  ProducerID  CopyrightID)
3 Ants 8 5 6


dette skal så give mig resultatet:
{
SPilnavn: Ants
Publisher: Atari
Producer: Origin
Copyright: IDSA
}
Avatar billede fn1977 Nybegynder
24. marts 2003 - 00:10 #16
så ser det ud til at andy har ret det kan du ikke med en query der skal laves en query for hver id du ønsker at hente i samme tabel..
Avatar billede fn1977 Nybegynder
24. marts 2003 - 00:15 #17
du kan prøve denne query... men jeg tror ikke den vil gøre som forventet

$query = "SELECT g.Name,
                c.Company
          FROM games g, company c
          WHERE g.PublisherID = c.CompanyID,
          OR    g.producerID = c.CompanyID,
          OR    g.copyrightID = c.CompanyID";

$result = mysql_query($query, $connection);
  die("could not run query")

while ($row = @ mysql_fetch_array($result))
{
  echo $row["name"] . " " . $row["company"];
  }
Avatar billede andy Nybegynder
24. marts 2003 - 08:22 #18
Split din company table op i tre.

Company:
CompanyID; Company; Link

producer:
producerID; Company; Link

publisher:
publisherID; Company; Link
Avatar billede pgm Nybegynder
24. marts 2003 - 09:22 #19
fn1977: Har prøvet dette og det virker ikke...
Avatar billede fn1977 Nybegynder
24. marts 2003 - 16:23 #20
Nej det tænkte jeg nok det var også det jeg skrev... en OR statement finder så vidt jeg husker den føste der matcher... som også sagt inden ... jeg tror faktisk at :

andy => er inde på noget af det rigtige ..
Avatar billede pgm Nybegynder
24. marts 2003 - 17:41 #21
Har brugt andy's forslag... så hvis han bare laver et svar så er der points på vej til ham...
Avatar billede andy Nybegynder
24. marts 2003 - 18:21 #22
Tak :)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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