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, 871 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
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Datenbanken
Mit sql eine Zeile einfügen, select und feste Werte (9)

Frage von helmuthelmut2000 zum Thema Datenbanken ...

Datenbanken
gelöst SQL Statement auseinandernehmen Like (20)

Frage von H41mSh1C0R zum Thema Datenbanken ...

Datenbanken
TSQL - Tabellen Export als Insert Statement (3)

Frage von ooAlbert zum Thema Datenbanken ...

Heiß diskutierte Inhalte
Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

DSL, VDSL
DSL-Signal bewerten (10)

Frage von SarekHL zum Thema DSL, VDSL ...

Windows Server
Mailserver auf Windows Server 2012 (8)

Frage von StefanT81 zum Thema Windows Server ...

Backup
Clients als Server missbrauchen? (8)

Frage von 1410640014 zum Thema Backup ...