MissAli Posted May 23, 2006 Share Posted May 23, 2006 Hi,I am cuurently being a site that lists publications and their authors. My problem is displaying the results of my databases.I have 3 tables publications, people and peoplexpublicationsPublications - contains all the info about the publication, title year etc and publication_codePeople - contains a list of people and people_codepeoplexpublications - contains the publication_code and people_code when a person is associated with a publication, this table can contain one publication_code to many people_codes as more than one person can be a part of a publication.My problem is when i try to display all this information from my 3 tables.here is the code[code]$sql = "SELECT *FROM publicationsWHERE publications.publication_status = 'live'ORDER BY publications.publication_year DESC";$result = mysql_query($sql, $conn)or die(mysql_error());// Set variables from the query for use in the htmlwhile ($row =mysql_fetch_array($result,MYSQL_ASSOC)){ $publication_code = $row['publication_code']; $publication_type=$row['publication_type']; $publication_summary=$row['publication_summary']; $publication_title=$row['publication_title']; $publication_year=$row['publication_year']; $pkey = $row['pkey']; $publication_status=$row['publication_status'];$sql = "SELECT *FROM peoplexpublications as pxp, peopleWHERE pxp.publication_code = $publication_codeAND pxp.people_code = people.people_code";$result2 = mysql_query($sql, $conn)or die(mysql_error());while ($row2 =mysql_fetch_array($result2,MYSQL_ASSOC)){$peoplexpublication_id=$row2['peoplexpublication_id']; $people_code=$row2['people_code']; $last_name =$row2['last_name']; $display_block .= "<p>$last_name, $publication_title,$publication_type,(<i>$publication_year</i>)</p>";}} [/code]Nowthis is producing a result that looks like this:De Souza, a publications teste,Peer Review,(2006)Craig, a publications teste,Peer Review,(2006)Murnaghan, a publications teste,Peer Review,(2006)De Souza, zebra zebra,zebra,(2005)Craig, zebra zebra,zebra,(2005)De Souza, PostGrad Couses 2006,Book Chapters,(2005)Craig, PostGrad Couses 2006,Book Chapters,(2005)Gallagher, PostGrad Couses 2006,Book Chapters,(2005)Murnaghan, PostGrad Couses 2006,Book Chapters,(2005)Craig, Study of a woman on mars,Paper,(2005)Regan, Study of a woman on mars,Paper,(2005)Prenter, Study of a woman on mars,Paper,(2005)Cassidy, Study of a woman on mars,Paper,(2005)Murphy, Study of a woman on mars,Paper,(2005)However i would like to group all the names that are associated with the same publication together on one line and display that publication once only. So in this example i would see four titles only.Anyone , any suggestionsThnaks in advance Quote Link to comment https://forums.phpfreaks.com/topic/10280-help-displaying-results-from-joined-tables/ Share on other sites More sharing options...
ryanlwh Posted May 23, 2006 Share Posted May 23, 2006 Try something like this.[!--sql--][div class=\'sqltop\']SQL[/div][div class=\'sqlmain\'][!--sql1--][span style=\'color:blue;font-weight:bold\']SELECT[/span] *, GROUP_CONCAT(last_name [color=green]ORDER BY[/color] last_name) [color=green]AS[/color] names[color=green]FROM[/color] [color=orange]peoplexpublications[/color] [color=green]as[/color] pxp, people[color=green]WHERE[/color] pxp.publication_code [color=orange]=[/color] $publication_code [color=blue]AND[/color] pxp.people_code [color=orange]=[/color] people.people_code GROUP BY pxp.publication_code [!--sql2--][/div][!--sql3--]Then you'll have the last names grouped together as a comma separated string in $row['names'] Quote Link to comment https://forums.phpfreaks.com/topic/10280-help-displaying-results-from-joined-tables/#findComment-38318 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.