Computer Webmaster Gaming Console Graphics Forum

Welcome to the Computer Webmaster Gaming Console Graphics Forum forums.

You are currently viewing our boards as a guest which gives you limited access to view most discussions and access our other features. By joining our free community you will have access to post topics, communicate privately with other members (PM), respond to polls, upload content and access many other special features. Registration is fast, simple and absolutely free so please, join our community today!

If you have any problems with the registration process or your account login, please contact contact us.

MK PitStop Main Earn $25 Earn Money Posting Extras Members Blogs Image Hosting User Pages
Go Back   Computer Webmaster Gaming Console Graphics Forum > Webmaster Forum > Website Coding > Database
Register FAQ/Rules Become A V.I.P. Member Search Today's Posts Mark Forums Read

Database Database problems or need to ask a question? maybe something to do with sql injections or a database software question. Database topics cover MySQL, PostgreSQL, Oracle, SQL Server or anything else related to databases.

Google
Closed Thread
 
LinkBack Thread Tools Display Modes
Old 05-31-2007, 8:39 PM   #1
Aapo V
 
Aapo V's Avatar
 
Posts: n/a
My Photos: (0)

Banked:
MK Cash: $

I am Worth:
MK Cash: $
Donate

Recent Blog: None

Default SELECT DISTINCT with Joins?

I'm having a problem, getting too much data back from my query

I have three tables - one for documents (document), one for
documentviews (documentview) and third for connecting a specific news to
a specific documentview (doc2docview). The doc2docview table has a
structure of ID, owner (the document ID) and reference (the documentview
ID).

One document can be linked to several documentviews, which creates a
problem - with this query, if a document is assigned to three
documentviews, I get the same title three times.

SELECT DISTINCT document.title as title,
doc2docview.owner,
document.ID as did,
document.summary as summary,
document.source as source,
document.ctime as time,
documentpart.filename as filename
FROM doc2docview
LEFT JOIN document ON doc2docview.owner = document.ID
LEFT JOIN documentpart ON document.ID = documentpart.document
WHERE reference IN (55,56)
AND
document.status = 'A'
ORDER BY document.ctime DESC
LIMIT 100

What should I do?

Aapo V
 
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl this Post!Reddit!
Old 05-31-2007, 8:39 PM   #2
Jacques Thoorens
 
Jacques Thoorens's Avatar
 
Posts: n/a
My Photos: (0)

Banked:
MK Cash: $

I am Worth:
MK Cash: $
Donate

Recent Blog: None

Default SELECT DISTINCT with Joins?

Aapo V a écrit :
> I'm having a problem, getting too much data back from my query
>
> I have three tables - one for documents (document), one for
> documentviews (documentview) and third for connecting a specific news to
> a specific documentview (doc2docview). The doc2docview table has a
> structure of ID, owner (the document ID) and reference (the documentview
> ID).
>
> One document can be linked to several documentviews, which creates a
> problem - with this query, if a document is assigned to three
> documentviews, I get the same title three times.
>
> SELECT DISTINCT document.title as title,
> doc2docview.owner,
> document.ID as did,
> document.summary as summary,
> document.source as source,
> document.ctime as time,
> documentpart.filename as filename
> FROM doc2docview
> LEFT JOIN document ON doc2docview.owner = document.ID
> LEFT JOIN documentpart ON document.ID = documentpart.document
> WHERE reference IN (55,56)
> AND
> document.status = 'A'
> ORDER BY document.ctime DESC
> LIMIT 100
>
> What should I do?
>
> Aapo V


Relational database are relational not because they use links/relations
between tables, but because they are grounded on the relational algebra.
A relation is a set and as a set, it cannot have two identical elements.
The operator SELECT doesn't fullfill this requirement and in most cases
does not produce true relations.
On the contrary, SELECT DISTINCT insures that the result will have
distinct elements/lines (a true mathematical relation without duplicates).

SELECT doc.title, dv.owner FROM document doc INNER JOIN doc2docview dv
ON doc.ID=dv.ID

Since you specified fields from the document table AND from
documentview, some document titles may be various times in the resulting
relation but side by side with different owners from documentview. So,
the lines are still different.

You may, of course, suppress the fields from documentview in the SELECT
clause, and your document titles will be unique (an INNER JOIN with
fields from one of the tables is called a semi-join) but in this way you
cannot know the owner. In that case, the signification of your query is
to list all documents that have owner.

SELECT doc.title FROM document doc INNER JOIN doc2docview dv
ON doc.ID=dv.ID

What should you do ? Nothing or maybe use some extra tool like a report
generator which can realize a fine presentation of your data (in Access
for instance you have a good one). In SQL, you have to choose betwen
natural join with repetitions of field values or semi-join with loss of
information.

Hope it will help you.

Jacques
 
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl this Post!Reddit!
Featured Websites
Free Space
Free Space
Free Space Free Space
Closed Thread
Tags: , ,




Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

Similar Threads
Thread Thread Starter Forum Replies Last Post
HELP: SELECT only last last few records that were created within last 5 minutes Neeper Database 0 05-31-2007 8:39 PM
Select while in Bill Y. Barool Database 2 05-31-2007 8:39 PM
DB_DataObject Joins Noel da Costa Pear 1 05-20-2007 6:34 PM
PEAR::HTML_Menu generating a select Alex Grasman Pear 0 05-20-2007 6:34 PM


Featured Websites




All times are GMT +1. The time now is 12:02 PM.


Powered by: vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.0.0
Cheap Computers
MK PitStop Copyright 2005 - 2008

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98