Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Select Statement

Frage Entwicklung Datenbanken

Mitglied: pauls1

pauls1 (Level 1) - Jetzt verbinden

12.06.2014 um 15:11 Uhr, 873 Aufrufe, 4 Kommentare

Hallo,

ich bin neu hier im Forum und habe schon gleich folgende Frage.

Und zwar habe zwei Tabellen ('post' und 'post_tag').
In 'post' speichere ich jeglich relevantes zum Post, wie den geschrieben Text..
Zu jedem Post kann man zugleich noch mehrere Tags hinzufügen, wie PhP MySQL...,
welche in 'post_tag' gespeichert werden.
Die beiden Tabellen hängen über die 'post_id' zusammen.


Nun zu meinem Problem.
Bisher habe ich zuerst über Select mir passend zu einem Muster alle Posts von 'post' geholt,
(also ich weiß von vornherein nicht die 'post_id', da sie in Abhängigkeit zur zeit geholt werden)
und danach nach Auswertung des Ergebnisses alle Tags über Select..in() geholt.

Meine konkrete Frage hierbei ist es, kann man innerhalb eines Statements die 'post' daten holen und zugleich alle relevanten 'post_tag' daten welche allerdings dann ein array darstellen würden.


tabelle 'post':

id | text
5 | 'test'
6 | 'blabla'


tabelle 'post_tag':


post_id | tag
5 | 'php'
5 | 'test'
6 | 'mysql'


und dass ich innerhalb einer Abfrage dann Ergebnisse bekomme welche alle Tags von 'post_tag' mit den Daten von 'post' "verbinden".


Hoffe es wurde einigermaßen ersichtlich was ich meine/suche.

Mit freundlichen Grüßen und schonmal Dankeschön für eure Hilfe,

Pauls

Mitglied: geocast
12.06.2014 um 15:42 Uhr
Also ist die post_id der Fremdschlüssel von post?

Wenn ja:

SELECT post.text, post_tag.tag
FROM post INNER JOIN post_tag ON post.id = post_tag.post_id

Aber mir sieht das noch etwas unlogisch aus, wie die Tabelle aufgebaut ist.
Bitte warten ..
Mitglied: pauls1
12.06.2014 um 16:05 Uhr
hey,

an sich funktioniert das nur bekomme ich ja dann für jeden tag einen text aus 'post', d.h ich bekomme für einen post welcher mehrere tags hat auch soviele tags wie dieser post hat, also auch soviele texte zurück.Sprich auf das obige Beispiel wäre das Ergebnis:

id | text | tag
5 | 'test' | 'php'
5 | 'test' | 'test'
6 | 'blabla' | 'mysql'

und ich würde gerne wissen ob man das doppelt aufkommen der beiden texte mit der id '5' vermeiden kann.

Inwiefern unlogisch ?

Grüße,

Pauls
Bitte warten ..
Mitglied: geocast
12.06.2014 um 16:10 Uhr
Gleiche Abfrage, nur eine kleine änderung

SELECT post.text, post_tag.tag
FROM post LEFT JOIN post_tag ON post.id = post_tag.post_id

Falls das nicht geht probier ein

GROUP BY post.id

am Ende aus
Bitte warten ..
Mitglied: pauls1
12.06.2014 um 16:17 Uhr
danke
ich habs jetzt anders gelöst mit array_agg()
Bitte warten ..
Neuester Wissensbeitrag
Exchange Server

WSUS bietet CU22 für Exchange 2007 SP3 nicht an. EOL Exchange 2007

Tipp von DerWoWusste zum Thema Exchange Server ...

Heiß diskutierte Inhalte
Batch & Shell
gelöst Batch xls nach aktuellem Datum auslesen und email senden (14)

Frage von michi-ffm zum Thema Batch & Shell ...

Backup
Datensicherung ARCHIV (12)

Frage von fautec56 zum Thema Backup ...

LAN, WAN, Wireless
Per Script auf UniFi-controller zugreifen und WPA2-Key ändern (11)

Frage von Winfried-HH zum Thema LAN, WAN, Wireless ...