Select van meerdere tables

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Yesyah Deli

Yesyah Deli

09/02/2013 20:47:28
Quote Anchor link
Ik heb dit in mijn database:
videos: id, titel, embed, beschrijving, views
nieuws: id, titel, plaatje, bericht, datum, views

Ik wil graag in een select van allebei de databases data uithalen
Hoe moet ik dat doen?

zoals dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?$sql= mysql_query("SELECT * FROM videos AND nieuws ORDER BY views DESC LIMIT 20") or die (mysql_error());
while($data= mysql_fetch_assoc($sql)){
?>

Ik weet dat de bovenstaande code fout en nutteloos is maar zodat jullie het een beetje snappen van wat ik bedoel
 
PHP hulp

PHP hulp

18/12/2024 13:45:56
 
Bart V B

Bart V B

09/02/2013 20:57:33
Quote Anchor link
Beide databases of tabellen?
Want daar zit een groot verschil in.

Waarschijnlijk bedoel je tabellen, dus dan klopt je query al redelijk.
Hoewel je ze ook zou kunnen joinen, maar zie geen relatie tussen de verschillende tabellen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
SELECT *
      FROM
      videos,
      nieuws
      ORDER BY
      videos.views
      DESC
      LIMIT 20
 
Erwin H

Erwin H

10/02/2013 12:39:52
Quote Anchor link
Bovenstaande voorbeeld zal wel werken, maar is niet echt zinvol. Dan krijg je namelijk het cartesisch product van beide tabellen, wat wil zeggen een rij voor elke mogelijke combinatie van twee rijen in de twee tabellen. Als je 10 records in beide tabellen hebt, krijg je dus 100 rijen uit je query.
Daarnaast heb je een probleem met de kolommen. Omdat er SELECT * staat wordt alles gewoon zo in je resultset gekiepert, waardoor het onduidelijk gaat worden welk 'id', welke 'titel' en welke 'views' je ophaalt.

De goede opmerking van Bart is wel over de relatie tussen beide tabellen. Zo te zien is er geen relatie en dus moet je ook niet gaan joinen. Wat je wel zou kunnen overwegen is met een UNION te werken. Daar kom je dan alleen met een aantal problemen te zitten. In de eerste plaats hebben de twee tabellen niet een gelijk aantal kolommen, ten tweede hebben de kolommen binnen de tabellen (behalve id, titel en views) niet dezelfde content. Daardoor ga je in 1 kolom in je resultset verschillende soorten velden krijgen. Daar moet je dan wel goed mee omgaan.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.