Gå til innhold

[Løst] Spørring fra flere baser med count


Anbefalte innlegg

Skrevet

Sliter litt med å finne en spørring på denne.

 

Har to databaser - fag og oppgaver.

1281208.jpeg

 

1281209.jpeg

 

Jeg skal hente ut alle fagkodene fra "fag" samt telle hvor mange oppgaver hvert fag har. Dvs at kun DAT1000 og INF1000 har oppgaver, mens de andre har null. Output skal bli seende slik ut:

 

 

1281210.jpeg

 

DAT1000 | 2

INF1000 | 2

LED2000 | 0

OBJ2000 | 0

BAC3000 | 0

PRG3000 | 0

 

Noen tips? :)

Videoannonse
Annonse
Skrevet (endret)

Du kan sette dette enkelt opp i PHP hvis det er det du bruker.

F.eks. slik for å hente noe mellom to tabeller:

<?php
// Sett inn din kobling til mysql.

$table1 = "tabell1"; // Hente fra tabell1
$table2 = "tabell2"; // Hente fra tabell2.

$sql1 = mysql_query("SELECT * FROM ".$table1." WHERE osv ");
$sql2 = mysql_query("SELECT * FROM ".$table2."WHERE osv");
?>;

 

Hvis det ikke var tabeller du mente, prøv dette med databaser:

<?php
$table1 = "tabell1"; // Hente fra tabell1
$table2 = "tabell2"; // Hente fra tabell2.

$db1 = "db1"; // Database 1
$db2 = "db2"; // Database 2

$connect1 = mysql_connect(host, brukernavn, passord);
$select1 = mysql_select_db($db1, $connect1);
$connect2 = mysql_connect(host, brukernavn, passord);
$select2 = mysql_select_db($db1, $connect2);

$sql1 = mysql_query("SELECT * FROM ".$table1." WHERE osv ", $connect1);
$sql2 = mysql_query("SELECT * FROM ".$table2."WHERE osv", $connect2);

mysql_close($connect1);
mysql_close($connect2);
?>

Du finner mye om dette på disse linkene:

mysql_connect - http://php.net/manua...sql-connect.php

mysql_select_db - http://php.net/manua...l-select-db.php

mysql_query - http://php.net/manua...mysql-query.php

mysql_close - http://php.net/manua...mysql-close.php

Endret av thypthon^
Skrevet

Jeg skal ha èn sql-spørring, dvs rett inn i SQL og ikke via PHP (dessverre) :-\

Okay, da blir det mer dette da (hakke jobbet med slike enda)

SELECT * FROM [db].[tabell] WHERE [din query];

SELECT * FROM [db2].[tabell] WHERE [din query];

Håer det hjalp! :)

Skrevet

Hvis du skal slå de sammen prøv å bruke "UNION" f.eks her:

(SELECT * FROM [db].[tabell] WHERE [din query])
UNION
(SELECT * FROM [db2].[tabell] WHERE [din query])

Den slår sammen resultatene.

Skrevet (endret)

Takk for svar, men ser ikke ut til at UNION hjelper. Da kommer spørring 2 rett under spørring 1.

 

ER'en min ser sånn ut, hvis det hjelper

 

1281223.jpeg

Endret av fglrx
Skrevet (endret)

Du vil bruke en join. Jeg skal ikke gi det svaret helt ut, men se på hva

select * from fag left join oppgaver using(fagkode); gir deg.

 

Det er ikke helt sikkert databasen du bruker støtter using - hvis ikke, kan du bruke dette:

select * from fag left join oppgaver where fag.fagkode=oppgaver.fagkode.

Det er også mulig at left join heter "left outer join" ... og det er mulig du kan bruke "natural join" i stedet (som automatisk bruker den ene kolonnen med felles navn, om det finnes en).

 

Se evt. på w3schools om left join her.

Endret av Djn
Skrevet

Takk! Fikk det omsider til:

 

select fagkode,count(nr) from fag left join oppgave using(fagkode) group by fagkode order by klassekode,fagkode

 

Jeg drev og kålet med natural join, men ser ut til at left join var tingen :)

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