php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 12-12-2006, 12:10
compuboy1010
 Member
Links : Onlinestatus : compuboy1010 ist offline
Registriert seit: Jul 2003
Ort: Deutschland
Beiträge: 474
compuboy1010 ist zur Zeit noch ein unbeschriebenes Blatt
Standard [MySQL 4.0] Zwei Datensätze mit einem Datensatz verknüpfen?

Hi,

ich lasse auf meiner Homepage Seminarveranstaltungen ausgeben.
Ich habe 4 Tabellen:

_events_times
_events_locations
_events_details
_person

Die Tabelle _events_times ist wie folgt aufgebaut:

CREATE TABLE `_events_times` (
`id` int(11) NOT NULL auto_increment,
`id_details` int(11) NOT NULL default '0',
`id_location` int(11) NOT NULL default '0',
`active` char(1) NOT NULL default 'y',
`id_referent` int(11) default NULL,
`date_post` timestamp(14) NOT NULL,
`date_s` date NOT NULL default '0000-00-00',
`date_e` date NOT NULL default '0000-00-00',
`time_s` time default '00:00:00',
`time_e` time default '00:00:00',
`lang` varchar(12) NOT NULL default '',
`fee` tinytext,
`id_contact_person` int(50) NOT NULL default '22',
`note` tinytext,
PRIMARY KEY (`id`),
KEY `id` (`id`)
) TYPE=MyISAM AUTO_INCREMENT=295 ;


Nun habe ich folgendes Problem:
Die Tabelle _events_times hat einmal ein Attribut id_referent und ein Attribut id_contact_person. Das sind 2 verschiedene Personen (2 verschiedene Datensätze) in Tabelle _person. Ist es möglich beide mit einer Abfrage zu bekommen? Keine Ahnung wie das gehen soll, denn die müssten dann ja auch noch unterschiedliche Namen bekommen. Bräuchte da Hilfe.
Mit Zitat antworten
  #2 (permalink)  
Alt 12-12-2006, 12:41
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

2x nen LEFT JOIN auf _person (1x referent_id=perso_id + 1x contact_id=perso_id) geht nicht?
__________________
Kissolino.com
Mit Zitat antworten
  #3 (permalink)  
Alt 12-12-2006, 12:47
compuboy1010
 Member
Links : Onlinestatus : compuboy1010 ist offline
Registriert seit: Jul 2003
Ort: Deutschland
Beiträge: 474
compuboy1010 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ja, die Idee hatte ich auch schon, aber wie soll das gehen?
Wie unterscheide ich dann bsw. zwischen der Email Addy des Referenten und der der Kontakt Person? Die beiden sind ja in der gleichen Tabelle und haben die Spalten haben die gleichen Attributnamen. "AS" kann ich da doch nicht verwenden...
Mit Zitat antworten
  #4 (permalink)  
Alt 12-12-2006, 12:56
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von compuboy1010
"AS" kann ich da doch nicht verwenden...
wieso nicht? du kannst jeder explizit angesprochenen spalte einen alias verpassen. halt nur blöd, wenn man faul ist und alles per * selektiert
__________________
Kissolino.com
Mit Zitat antworten
  #5 (permalink)  
Alt 12-12-2006, 13:00
compuboy1010
 Member
Links : Onlinestatus : compuboy1010 ist offline
Registriert seit: Jul 2003
Ort: Deutschland
Beiträge: 474
compuboy1010 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Nein faul nicht, aber es geht trotzdem nicht:

PHP-Code:
$res mysql_query("
    SELECT
        c.id, c.date_e, c.date_s, c.time_s, c.time_e, c.note AS note_times,
        b.at, b.street, b.building, b.zip, b.city, b.country, 
        a.headline, a.summary, a.target, a.fee, a.info, a.anmeldung, a.infolink, 
        a.note AS note_details, d.name_f, d.name_l, d.email
    FROM
        _events_details a, _events_locations b, _events_times c, _person d
    LEFT JOIN _person
        ON c.id_referent = d.id
    LEFT JOIN _person
        ON c.id_contact_person = d.id
    WHERE
        c.lang = '"
.$language."'
    AND
        c.date_s BETWEEN CURDATE() AND ADDDATE(CURDATE(), INTERVAL 200 DAY)
    AND 
        c.id_details = a.id_details
    AND
        c.id_location = b.id_location 
    AND
        c.active = 'y'
    ORDER BY 
        c.date_s ASC"
); 

Geändert von compuboy1010 (12-12-2006 um 13:12 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 12-12-2006, 13:13
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von compuboy1010
Nein faul nicht, aber es geht trotzdem nicht:

PHP-Code:
    SELECT
        
....
    
FROM
        _events_times c
    LEFT JOIN _person p1 
        ON c
.id_referent p1.id
    LEFT JOIN _person p2
        ON c
.id_contact_person p2.id
    LEFT JOIN _events_details a
        ON 
...
    
LEFT JOIN _events_locations b 
        ON 
...
    
WHERE
        
... 
mir würde das so besser gefallen (ob LEFT, RIGHT, INNER JOIN musst du selber sehen).
__________________
Kissolino.com
Mit Zitat antworten
  #7 (permalink)  
Alt 12-12-2006, 13:30
compuboy1010
 Member
Links : Onlinestatus : compuboy1010 ist offline
Registriert seit: Jul 2003
Ort: Deutschland
Beiträge: 474
compuboy1010 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ahhh, interessant....!



OK, ich habe mich mal versucht:

PHP-Code:
$res mysql_query("
    SELECT
        c.id, c.date_e, c.date_s, c.time_s, c.time_e, c.note AS note_times,
        b.at, b.street, b.building, b.zip, b.city, b.country, 
        a.headline, a.summary, a.target, a.fee, a.info, a.anmeldung, a.infolink, 
        a.note AS note_details, p1.name_f, p1.name_l, p1.email, p2.name_f, p2.name_l, p2.email
    FROM
        _events_times c
    LEFT JOIN _person p1 
        ON c.id_referent = p1.id
    LEFT JOIN _person p2
        ON c.id_contact_person = p2.id
    LEFT JOIN _events_details a
        ON c.id_details = a.id_details
    LEFT JOIN _events_locations b 
        ON c.id_location = b.id_location
    WHERE        
        c.lang = '"
.$language."'         
    AND
        c.date_s BETWEEN CURDATE() AND ADDDATE(CURDATE(), INTERVAL 200 DAY)
    ORDER BY 
        c.date_s ASC"
); 
Nun stellt sich mir die Frage, wenn es so funzen sollte - muss gleich nochmal drüberschauen - wie ich das denn in PHP ausgeben könnte!

Wie würde ich nun email aus p1 und email aus p2 ausgeben?
Ist mir schleierhaft!
Mit Zitat antworten
  #8 (permalink)  
Alt 12-12-2006, 13:35
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von compuboy1010
Wie würde ich nun email aus p1 und email aus p2 ausgeben?
Ist mir schleierhaft!
ALIAS vergeben! und die query mal von hand im phpmyadmin testen. print_r() kann auch hilfreich sein. kann doch nicht so schwer sein, oder?
__________________
Kissolino.com
Mit Zitat antworten
  #9 (permalink)  
Alt 12-12-2006, 13:40
compuboy1010
 Member
Links : Onlinestatus : compuboy1010 ist offline
Registriert seit: Jul 2003
Ort: Deutschland
Beiträge: 474
compuboy1010 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
kann doch nicht so schwer sein, oder?
Das ist relativ, wenn man sich nicht jeden Tag mit SQL beschäftigt dann schon!

Das Problem ist, dass ich nicht weiß an welcher Stelle ich die Aliase vergeben soll.

Geändert von compuboy1010 (12-12-2006 um 13:46 Uhr)
Mit Zitat antworten
  #10 (permalink)  
Alt 12-12-2006, 13:52
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von compuboy1010
Das Problem ist, dass ich nicht weiß an welcher Stelle ich die Aliase vergeben soll.
schwere geburt mit dir. alle doppelt benamten spalten werfen einen mysql_error. wenn du also 2x "email" holst, bringst du mysql durcheinander, also für min. 1 von beiden einen alias verwenden.
__________________
Kissolino.com
Mit Zitat antworten
  #11 (permalink)  
Alt 12-12-2006, 13:56
compuboy1010
 Member
Links : Onlinestatus : compuboy1010 ist offline
Registriert seit: Jul 2003
Ort: Deutschland
Beiträge: 474
compuboy1010 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Super!!!

Es klappt nun. Du warst eine sehr große Hilfe!!

Vielen Dank!!

Geändert von compuboy1010 (12-12-2006 um 14:53 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

ModuleStudio ansehen ModuleStudio

Modellgetriebene Entwicklung von Erweiterungen für das Open Source Framework Zikula.

15.01.2019 Guite | Kategorie: PHP ENTWICKLUNGSUMGEBUNG
FAQ Script PHP ansehen FAQ Script PHP

FAQ Script PHP is a simple knowledgebase script and you could use it as a Frequently Asked Question section on your website. It is written in PHP and MySQL.

14.01.2019 nevenov | Kategorie: PHP/ FAQ
Admidio Mitgliederverwaltung

Admidio ist eine kostenlose Online-Mitgliederverwaltung, die für Vereine, Gruppen und Organisationen optimiert ist. Sie besteht neben der Mitgliederverwaltung aus einer Vielzahl an Modulen (Foto-, Download-, Terminverwaltung), die in eine neue oder besteh

08.01.2019 webmaster52@ | Kategorie: PHP/ Groupware
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:27 Uhr.