|
| Hente data på tværs af to tabeller? Fra : Stig Sørensen |
Dato : 27-01-08 09:47 |
|
Hej gruppe.
Jeg skal have noget input ud fra en tabel, hvor WHERE passer med en
række i en anden tabel - samt have vist hvor mange rækker dette giver.
SELECT * from TabelA WHERE id_kommentar_topic = ( fra TabelB
(topic_id))
- Hvordan gør jeg dette?
Samt vil jeg gerne vide, hvor mange rækker der passer på ovenstående
forespørgelse.
På forhånd mange tak
| |
Martin (27-01-2008)
| Kommentar Fra : Martin |
Dato : 27-01-08 18:47 |
|
Stig Sørensen wrote:
> Hej gruppe.
>
>
> Jeg skal have noget input ud fra en tabel, hvor WHERE passer med en
> række i en anden tabel - samt have vist hvor mange rækker dette giver.
>
>
> SELECT * from TabelA WHERE id_kommentar_topic = ( fra TabelB
> (topic_id))
> - Hvordan gør jeg dette?
SELECT
a.*,
b.count(*) AS kommentarantal
FROM
TabelA AS a
INNER JOIN
TabelB AS b
ON
b.topic_id = a.id_kommentar_topic
GROUP BY
b.topic_id
Noget ala dette?
| |
Martin (27-01-2008)
| Kommentar Fra : Martin |
Dato : 27-01-08 18:48 |
|
Martin wrote:
> b.count(*) AS kommentarantal
Hov
COUNT(b.*) AS kommentarantal
| |
Stig Sørensen (27-01-2008)
| Kommentar Fra : Stig Sørensen |
Dato : 27-01-08 11:28 |
|
On 27 Jan., 18:47, Martin <mar...@aarhof.eu.invalid> wrote:
> Martin wrote:
> > b.count(*) AS kommentarantal
>
> Hov
> COUNT(b.*) AS kommentarantal
Tak for dit hurtige svar.
SELECT
a.*,
COUNT(b.*) AS kommentarantal
FROM
nyheder AS a
INNER JOIN
punbb_posts AS b
ON
b.topic_id = a.id_kommentar_topic
GROUP BY
b.topic_id
Giver følgende fejlmeddelelse:
#1064 - 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 '* ) AS kommentarantal FROM nyheder AS a INNER JOIN
punbb_posts AS b ON b.t' at line 1
Jeg har afprøvet det i phpMyAdmin. Det skal dog kombineres med PHP,
men det er jo en helt anden gruppe.
Jeg kan ikke se hvad fejlen skal være, det er alt for avanceret til
mig.
| |
Stig Sørensen (27-01-2008)
| Kommentar Fra : Stig Sørensen |
Dato : 27-01-08 12:15 |
|
Jeg fandt frem til en løsning:
SELECT a.*, COUNT(c.topic_id) AS kommentarantal
FROM nyheder AS a
LEFT JOIN punbb_posts AS c ON ( c.topic_id = a.id_kommentar_topic )
GROUP BY c.topic_id
ORDER BY kommentarantal DESC
- Det virker helt efter hensigten ;)
Og med PHP (hvis andre skulle kunne få glæde af det):
<?php
$query_hent_kommentar = mysql_query("SELECT a.*, COUNT(c.topic_id) AS
kommentarantal
FROM nyheder AS a
LEFT JOIN punbb_posts AS c ON ( c.topic_id = a.id_kommentar_topic )
GROUP BY c.topic_id
ORDER BY kommentarantal DESC");
while($row = mysql_fetch_assoc($query_hent_kommentar))
{
echo "<a href='/visnyhed.php?id=".$row['id']."'>".
$row['overskrift']." (".$row['kommentarantal'].")</a><br />";
}
?>
Tusind tak for hjælpen, og for at få mig på rette spor ;)
| |
Stig Sørensen (28-01-2008)
| Kommentar Fra : Stig Sørensen |
Dato : 28-01-08 07:46 |
|
Jeg er kommet i nye problemer, det omhandler stadig emnet, at hente på
tværs af to tabeller, så håber det ok, at jeg genbruger dette emne ;)
SELECT * from phpbb_garage, phpbb_garage_makes WHERE
phpbb_garage.make_id = phpbb_garage_makes.id
Ovenstående virker fint! Alt hvad jeg mangler nu, er at den _kun_ skal
hente data ud hvor 'phpbb_garage.member_id = 3'.
Jeg har prøvet utallige kombinationer, men får syntax fejl hver gang.
Hvordan gør jeg dette? Jeg kan ikke tilføje en ekstra WHERE nogen
steder uden jeg får fejl :(
| |
Thorbjørn Ravn Ander~ (28-01-2008)
| Kommentar Fra : Thorbjørn Ravn Ander~ |
Dato : 28-01-08 15:48 |
|
"Stig Sørensen" <stig.sorensen@gmail.com> writes:
> Jeg har prøvet utallige kombinationer, men får syntax fejl hver gang.
Prøv at skrive de kombinationer her du tror er mest rigtige...
--
Thorbjørn Ravn Andersen
| |
Stig Sørensen (28-01-2008)
| Kommentar Fra : Stig Sørensen |
Dato : 28-01-08 07:51 |
|
On 28 Jan., 15:48, nospam0...@gmail.com (Thorbjørn Ravn Andersen)
wrote:
> "Stig Sørensen" <stig.soren...@gmail.com> writes:
> > Jeg har prøvet utallige kombinationer, men får syntax fejl hver gang..
>
> Prøv at skrive de kombinationer her du tror er mest rigtige...
> --
> Thorbjørn Ravn Andersen
Jeg har prøvet:
SELECT * from phpbb_garage WHERE member_id = 3, phpbb_garage_makes
WHERE phpbb_garage.make_id = phpbb_garage_makes.id
SELECT * from phpbb_garage WHERE member_id = 3, phpbb_garage_makes AND
WHERE phpbb_garage.make_id = phpbb_garage_makes.id
- Og ligende. Flytter blot rundt på WHERE member_id = 3, men har ikke
heldet med mig.
| |
Thorbjørn Ravn Ander~ (28-01-2008)
| Kommentar Fra : Thorbjørn Ravn Ander~ |
Dato : 28-01-08 16:01 |
|
"Stig Sørensen" <stig.sorensen@gmail.com> writes:
> SELECT * from phpbb_garage WHERE member_id = 3, phpbb_garage_makes
> WHERE phpbb_garage.make_id = phpbb_garage_makes.id
Betingelserne til sidst:
select .... from .... where a=1 and b=2...
--
Thorbjørn Ravn Andersen
| |
Stig Sørensen (28-01-2008)
| Kommentar Fra : Stig Sørensen |
Dato : 28-01-08 08:14 |
|
On 28 Jan., 16:01, nospam0...@gmail.com (Thorbjørn Ravn Andersen)
wrote:
> "Stig Sørensen" <stig.soren...@gmail.com> writes:
> > SELECT * from phpbb_garage WHERE member_id = 3, phpbb_garage_makes
> > WHERE phpbb_garage.make_id = phpbb_garage_makes.id
>
> Betingelserne til sidst:
>
> select .... from .... where a=1 and b=2...
> --
> Thorbjørn Ravn Andersen
Tusinde tak. Det er noteret bag øret
Jeg havde faktisk været meget tæt på så, kan jeg se.
I stedet for WHERE a=1 and b=2 så prøvede jeg med WHERE a=1 and WHERE
b=2.
Men jeg bukker og takker igen.
| |
Thorbjørn Ravn Ander~ (28-01-2008)
| Kommentar Fra : Thorbjørn Ravn Ander~ |
Dato : 28-01-08 16:16 |
|
"Stig Sørensen" <stig.sorensen@gmail.com> writes:
> Tusinde tak. Det er noteret bag øret
Skriv det nu et sted hvor du kan se det.
> Men jeg bukker og takker igen.
Velbekomme. SQL er sådan en dejlig herskeragtig måde at arbejde på
("giv mig det og det") indtil at man skal have sat farten op :)
--
Thorbjørn Ravn Andersen
| |
|
|