Archief - 3 tabellen selecteren

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Deadangel

Legacy Member
SELECT * FROM drank
SELECT * FROM eten
SELECT * FROM snacks

Ik zou àl dit in één commando hebben, iemand enig idee hoe ik dit doe ?

Een Join ofzo zal niet werken, want die 3 tabbellen hebben niks met elkaar gemeen..

En ik zou die resultaten graag op alfabetische vollegorde hebben :)

Scrimrage

Legacy Member
tussen elke select een UNION dacht ik om ze te combineren

Deadangel

Legacy Member
Kan ik meegeven uit welke tabel de resultaten komen ?

BV; Cola - Drank
Chips - Extra

.. ?

Scrimrage

Legacy Member
weet ik veel wa ge der mee wilt doen, snap uberhaubt nie da als er geen relatie is tussen tabellen wrm ge dan alles in 1 keer nodig hebt

metalleke

Legacy Member
Op het eerste zicht lijkt het dat je databank schema verkeerd is.
Zou eerder doen tabel Type (met drank, eten, snacks, ....) en dan tabel Items (met alle items die id tabellen zitten).

woony

Legacy Member
elke 'kolom' een zelfde naam geven, daar op unionen en daar op ordenen . vb.

select * from
(
select naam as Titel, prijs as Prijs, 'drank' as type from drank
union
select titel as Titel, prijs as Prijs, 'eten' as type from eten
union
select naam as titel, price as Prijs, 'snacks' as stype from snacks
)t
order by Titel

zoiets...

_Nothing_

Legacy Member
metalleke zei:
Op het eerste zicht lijkt het dat je databank schema verkeerd is.
Zou eerder doen tabel Type (met drank, eten, snacks, ....) en dan tabel Items (met alle items die id tabellen zitten).
² ... misschien beter dit aanpassen voor je verder gaat

GregoryCo

Legacy Member
SELECT drank.*, eten.*, snacks.* FROM drank, eten, snacks ORDER BY naam ASC

werkt da nie?

metalleke

Legacy Member
GregoryCo zei:
SELECT drank.*, eten.*, snacks.* FROM drank, eten, snacks ORDER BY naam ASC

werkt da nie?

Nee, indien je in iedere tabel de rij "naam" hebt zal deze "ambiguous column" error geven. Omdat er niet kan bepaald worden over welke rij uit de tabellen het eigenlijk gaat. Dit zou enkel werken indien die rij slechts in 1 vd tabellen voorkomt.

voltje

Legacy Member
Je zou idd beter eerst je database schema aan passen...
Je bent beter met "Categorie" en dan "Items" en dan adhv een Join de Items uitlezen samen met de Categerie...

Baloe

Legacy Member
Probeer anders een:

SELECT *, a.naam FROM drank a, eten b, snacks c ORDER BY a.naam ASC

iets in die genre toch. Als da nie werkt probeer eens zonder de order by

Update: Achter *, a.naam bijgezet.

metalleke

Legacy Member
Baloe zei:
Probeer anders een:

SELECT *, a.naam FROM drank a, eten b, snacks c ORDER BY a.naam ASC

iets in die genre toch. Als da nie werkt probeer eens zonder de order by

Update: Achter *, a.naam bijgezet.

Das niet correct eh.

Oplossing staat toch wel al hierboven
1. Herdoe je databank ontwerp
2.
woony zei:
elke 'kolom' een zelfde naam geven, daar op unionen en daar op ordenen . vb.

Code:
select * from
(
select naam as titel, prijs as prijs, 'drank' as type from drank
union
select naam as titel, prijs as prijs, 'eten' as type from eten
union
select naam as titel, prijs as prijs, 'snacks' as stype from snacks
) as temp
order by titel

Baloe

Legacy Member
metalleke zei:
Das niet correct eh.

Oplossing staat toch wel al hierboven
1. Herdoe je databank ontwerp
2.


Code:
select * from
(
select naam as titel, prijs as prijs, 'drank' as type from drank
union
select naam as titel, prijs as prijs, 'eten' as type from eten
union
select naam as titel, prijs as prijs, 'snacks' as stype from snacks
) as temp
order by titel

I see, men query klopt inderdaad niet, maar zal ook wel iets in die genre doen. Alleen dat hij alles naast elkaar gaat zetten :-)

Deadangel

Legacy Member
$sql_res=mysql_query("SELECT onderwerp, foto, tabel, COUNT(onderwerp) AS aantal
FROM
(
SELECT * FROM (SELECT drank AS onderwerp, foto, 'Drank' AS tabel FROM drank WHERE drank like '%$q%') AS drank
UNION ALL
SELECT * FROM (SELECT snack AS onderwerp, foto, 'Snack' AS tabel FROM snack WHERE snack like '%$q%') AS snack
UNION ALL
SELECT * FROM (SELECT eten AS onderwerp, foto, 'Eten' AS tabel FROM eten WHERE eten like '%$q%') AS eten
) AS totaal
GROUP BY onderwerp
ORDER BY onderwerp ASC LIMIT 5");

Dit werkte :)

dJeez

Legacy Member
Audiosonic zei:
Kunt ge ook ni gewoon dit doen ?
Dan krijg je het cartesiaanse product van de 3 tabellen, dus alle mogelijke combinaties tussen de records van de 3 tabellen. Ik denk niet dat dat is wat de TS wil.

Ik kan metalleke enkel bijtreden : het model is gewoon compleet verkeerd, waardoor het simpelweg selecteren van de data van de 3 categorieën dus ook niet simpel verloopt.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan